【问题标题】:Unity 2D addforce with random direction for the objectUnity 2D addforce 对象的随机方向
【发布时间】:2018-11-12 11:00:56
【问题描述】:

请帮帮我!所以我正在制作一个 hacky sack 游戏,但是当我踢这个物体时,它只是在没有随机方向和力量的情况下向上移动。我希望我的角色在跑步和空闲时不要撞到物体我只想在我的角色踢腿时撞到物体。

这是我的玩家力量代码。

  if (canSipa == true)
{  
    _pitcha.GetComponent<Rigidbody2D>().AddForce(new Vector2(1000, 5000));
   }
    }

对于对象:

  private void OnTriggerEnter2D(Collider2D collision)
 {
   if(collision.gameObject.tag == "Player")
  {   
   _player.GetComponent<PlayerManager>().canSipa = true;
   }
 }

     private void OnTriggerExit2D(Collider2D collision)
   {
         if (collision.gameObject.tag == "Player")
    {
     _player.GetComponent<PlayerManager>().canSipa = false ;
       }
   }

【问题讨论】:

  • 使用随机向量?

标签: c# object unity3d character rigid-bodies


【解决方案1】:

您可以使用矢量数学来抽象方向和力:

Vector2 direction = new Vector2((float)Random.Range(-1000,1000), (float)Random.Range(-1000,1000));

float force = (float)Random.Range(-1000,1000);
pitcha.GetComponent<Rigidbody2D>().AddForce(direction * force);

【讨论】:

  • 去试试,我回来告诉你结果谢谢。
【解决方案2】:

那是因为在这一行中,您定义了一个具有固定方向和力的 vector2:

    pitcha.GetComponent<Rigidbody2D>().AddForce(new Vector2(1000, 5000));

您可以使用 Random.Range 创建vector2:

     var direction = Random.Range(-1000, 1000); 
     //This way you can go right and left
     var force = Random.Range(3000,5000); 
     //This way you can variate the force
     pitcha.GetComponent<Rigidbody2D>().AddForce(new Vector2(direction,force));

使用公共浮点数作为值(maxDirection、minDirection...),这样您就可以在玩游戏时更改这些值。希望对您有所帮助。

【讨论】:

  • 去试试,我回来告诉你结果谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多