刚体爬升时禁用统一惯性

时间:2018-10-28 13:26:04

标签: c# unity3d

如下面的gif所示,当我在键盘上左右击打时,角色会移动。如果我左右释放,角色将停止移动。

我将以下代码用于水平移动:

rigidbody.AddForce(x,0,z)

我的问题是,当我尝试使用此代码时

rigidbody.AddForce(0,y,0)

对于垂直移动,角色可以很好地爬墙,但是当我松开向上或向下键时,角色具有惯性

为什么水平运动没有惯性而垂直呢?

enter image description here


更新

我可以使用

rig.MovePosition();

而不是AddForce,但问题仍然是他们。为什么水平移动的AddForce不会导致惯性,而垂直移动的AddForce会导致惯性?

1 个答案:

答案 0 :(得分:0)

我找到了原因,在角色对象检查器>动画师中,我启用了“应用根运动”,这是root motion文档,它说:

  

“根变换”是在“身体变换”的Y平面上的投影,并且是在运行时计算的。

所以我想“应用根运动”将仅在xz轴上起作用,

所以水平移动没有惯性,这是统一的魔法,当我禁用“应用根运动”时,addforce移动将具有惯性

在我的情况下,爬升沿y轴移动,而在物理学中,加力在大多数情况下具有惯性 因此“应用根运动”不起作用,因此,如果我想禁用惯性,解决方案是使用“刚体#MovePosition”而不是“ AddForce”