【问题标题】:Disable inertia in unity when rigidbody climbs刚体爬升时禁用统一惯性
【发布时间】:2018-10-28 13:26:04
【问题描述】:

正如您在下面的 gif 中看到的那样,当我在键盘上左右敲击时,角色会移动。如果我松开左右,角色将按预期停止移动。

我使用此代码进行水平移动:

rigidbody.AddForce(x,0,z)

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

rigidbody.AddForce(0,y,0)

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

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


更新:

我可以使用

rig.MovePosition();

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

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    我找到了原因,在角色对象检查器>动画师中,我启用了“应用根动作”,这里是root motion doc,上面写着:

    Root Transform 是 Body Transform 在 Y 平面上的投影,在运行时计算。

    所以我猜“应用根运动”只适用于 xz 轴,

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

    在我的例子中,爬升是在 y 轴上移动,而在物理学中,addforce 在大多数情况下都有惯性 所以“应用根运动”不起作用,所以如果我想禁用惯性,解决方案是使用刚体#MovePosition 而不是 AddForce

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      相关资源
      最近更新 更多