【发布时间】:2014-08-31 03:23:38
【问题描述】:
我正在尝试在 Unity 中制作一个简单的 2D 自上而下的射击游戏。我有鼠标的基本移动和跟随,但是移动有问题。
当你同时按下 Up 和 Right 时,它会像你期望的那样沿对角线移动,但是当你放开 Up 键时,它会继续沿对角线移动到我希望它向右移动的位置。我处理运动的代码是:
private void Update ()
{
if (Input.GetKey(Up)) {
Debug.Log("UP");
Vector3 velUp = rigidbody2D.velocity;
velUp.y = walkSpeed;
rigidbody2D.velocity = velUp;
}
else if (Input.GetKey(Down)) {
Vector3 velDown = rigidbody2D.velocity;
velDown.y = walkSpeed*-1;
rigidbody2D.velocity = velDown;
}
else if (Input.GetKey(Left)) {
Vector3 velLeft = rigidbody2D.velocity;
velLeft.x = walkSpeed*-1;
rigidbody2D.velocity = velLeft;
}
else if (Input.GetKey(Right)) {
Vector3 velRight = rigidbody2D.velocity;
velRight.x = walkSpeed;
rigidbody2D.velocity = velRight;
}
else {
Vector3 velStop = rigidbody2D.velocity;
velStop.x = 0;
velStop.y = 0;
rigidbody2D.velocity = velStop;
}
//rotation
Vector3 mousePos = Input.mousePosition;
Vector3 objectPos = Camera.main.WorldToScreenPoint (transform.position);
mousePos.x = mousePos.x - objectPos.x;
mousePos.y = mousePos.y - objectPos.y;
float angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
}
我怎样才能让运动按照我提到的方式进行?像这样沿对角线移动会使移动看起来不正常。
非常感谢任何帮助。谢谢。
【问题讨论】:
标签: c# unity3d game-physics topdown