繁体   English   中英

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

[英]Unity 2D addforce with random direction for the object

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

这是我的玩家代码。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM