请帮助我!因此,我正在做一个骇人的麻袋游戏,但是当我踢物体时,它只是在没有随机方向和力的情况下上升。而且我希望角色在奔跑和闲置时不要撞到物体,我只希望角色踢时能撞到物体。
这是我的玩家代码。
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 ;
}
}
答案 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);