刚体速度搞乱物理UNITY

时间:2015-10-04 22:29:37

标签: unity3d physics velocity

我正在尝试使用rigidbody.velocity移动我的播放器:

rigidbod.velocity = new Vector2 (Input.GetAxis ("Horizontal") * maxSpeed, rigidbod.velocity.y);
问题是,这会弄乱我的爆炸代码。该角色应该在爆炸附近被击倒。我知道它为什么会发生;如果玩家仍然是,则刚体的X速度将返回0,这意味着任何向X轴推动玩家的外力都会抵消这种情况。因此,当我添加爆炸时,玩家会在几个单位之外切换到他的新位置。它看起来非常不自然和生涩,因为他应该被推回去,但他的代码告诉他要保持静止,除非按下按键。我发布此信息,看看是否有任何方法可以重新编写此代码,以便在从外部力量正确推动时移动播放器。我听说AddForce有效,但是当我使用它时,我的播放器的速度不断增加。他太快或太慢。关于如何让这个工作的任何想法?我尝试添加rigidbody.velocity.x之后它说“maxspeed'希望它可以允许外力输入,并且它可以工作,但它会扰乱运动代码,使他走得太快。我无法同时让爆炸和动作代码正常工作。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

这正是Unity文档中明确说明的原因:

  

在大多数情况下,您不应该直接修改速度,因为这样可以   导致不切实际的行为。

而不是直接修改速度,你应该使用AddForce(..)

Vector2 force = new Vector2 (Input.GetAxis ("Horizontal") * maxSpeed, 0f);
rigidbody.AddForce(force);

//or if in update:
rigidbody.AddForce(force * Time.deltaTime);