You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决运动学刚体设置线速度为0时的不支持报错?

解决运动学刚体无法设置速度的问题

你遇到的报错「setting linear velocity of a kinematic body is not supported」核心原因是:你的Rigidbody被设置为了Kinematic(运动学)状态,这种状态下Unity禁止直接修改velocity属性——运动学刚体由Transform、动画或脚本手动控制位移,而非物理引擎驱动,物理速度对它完全无效。

下面给你几种可行的解决思路,根据你的实际需求选择:

情况1:不需要保持运动学状态

直接关闭Rigidbody的IsKinematic开关,之后就能正常设置速度让物体停止:

// 先关闭运动学状态
objectRigidbody.isKinematic = false;
// 瞬间停止
objectRigidbody.velocity = Vector3.zero;
// 平滑减速(注意乘Time.deltaTime保证帧率无关)
float velocityChangeSpeed = 10f;
objectRigidbody.velocity = Vector3.Lerp(objectRigidbody.velocity, Vector3.zero, velocityChangeSpeed * Time.deltaTime);

情况2:必须保持运动学状态

如果因为动画、场景逻辑等原因不能关闭运动学,要通过控制位移逻辑让物体停止:

  • 停止所有驱动运动学刚体移动的代码:比如你之前用MovePosition、MoveRotation这类方法控制位移,只要暂停调用这些方法,物体就会停止。
  • 固定Transform位置:如果是动画导致的移动,暂停动画或切换到静止状态;如果是脚本驱动,直接不再更新Transform的position值即可。
  • 重置运动状态:若需要瞬间让它停在当前位置,保持当前Transform坐标不变就行——运动学刚体本身没有物理惯性,不会自己移动。

内容的提问来源于stack exchange,提问作者Game of HB - YT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:22:38