如下面的gif所示,当我在键盘上左右击打时,角色会移动。如果我左右释放,角色将停止移动。
我将以下代码用于水平移动:
rigidbody.AddForce(x,0,z)
我的问题是,当我尝试使用此代码时
rigidbody.AddForce(0,y,0)
对于垂直移动,角色可以很好地爬墙,但是当我松开向上或向下键时,角色具有惯性。
为什么水平运动没有惯性而垂直呢?
更新:
我可以使用
rig.MovePosition();
而不是AddForce,但问题仍然是他们。为什么水平移动的AddForce不会导致惯性,而垂直移动的AddForce会导致惯性?
答案 0 :(得分:0)
我找到了原因,在角色对象检查器>动画师中,我启用了“应用根运动”,这是root motion文档,它说:
“根变换”是在“身体变换”的Y平面上的投影,并且是在运行时计算的。
所以我想“应用根运动”将仅在xz轴上起作用,
所以水平移动没有惯性,这是统一的魔法,当我禁用“应用根运动”时,addforce移动将具有惯性
在我的情况下,爬升沿y轴移动,而在物理学中,加力在大多数情况下具有惯性 因此“应用根运动”不起作用,因此,如果我想禁用惯性,解决方案是使用“刚体#MovePosition”而不是“ AddForce”