移动麻烦

时间:2017-04-27 04:41:40

标签: c# unity3d game-physics unity2d

在我的游戏中,我有一个pacman风格的舞台。边缘对撞机放置在每条线上。 现在,对于我的播放器的移动(WASD风格),我最初使用transform.Translate。这给了我最好的流畅动作,我希望我的玩家拥有。你们大多数人都知道,这使得边缘碰撞器无效,因为玩家只是将它的位置转换到边缘。为了解决这个问题,我使用了rb.AddForce(new Vector2(Input.GetAxis(“Horizo​​ntal”)* speed,Input.GetAxis(“Vertical”)* speed);相反,我真的不喜欢玩家如何移动因为即使你放开WSAD键,它仍会移动,它会发出更多的加速移动,而不是计算出的移动。

有没有人知道解决这个问题的方法?流体WASD运动就像transform.Translate但不会通过边缘碰撞器。

我很感激!

1 个答案:

答案 0 :(得分:0)

物体仍在移动的原因是刚体上的速度。我的建议是直接改变速度。另外,请务必将您的代码放在FixedUpdate中。

Vector2 inputVector = new Vector2(Input.GetAxis("Vertical", Input.GetAxis("Horizontal"));
inputVector = inputVector.normalized; // Makes the Length of the vector = 1 even if pressed diagonally, if you don't want something like this, remove it
rb.velocity = inputVector * speed;

有关详细信息,请务必观看此视频:https://unity3d.com/earn/tutorials/projects/space-shooter/moving-the-player 如需更高级版本,请阅读:http://wiki.unity3d.com/index.php?title=RigidbodyFPSWalker