具有对象随机方向的Unity 2D addforce

时间:2018-11-12 11:00:56

标签: c# object unity3d character rigid-bodies

请帮助我!因此,我正在做一个骇人的麻袋游戏,但是当我踢物体时,它只是在没有随机方向和力的情况下上升。而且我希望角色在奔跑和闲置时不要撞到物体,我只希望角色踢时能撞到物体。

这是我的玩家代码。

  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 ;
       }
   }

2 个答案:

答案 0 :(得分:0)

那是因为在这一行中,您要定义具有固定方向和力的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 ...),以便您可以在播放时更改这些值。希望有帮助。

答案 1 :(得分:0)

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

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);