首页 > 解决方案 > 使用 AddForce 改变刚体的速度?

问题描述

我制作了一个刚体控制器,它基于控制固定更新内部对象的速度。只有当我完成时,我才意识到这个链接说你应该在固定更新中使用rigidbody.velocity,因为它会导致不良行为。

是否有我可以使用的数学方程或某种解决方案,以便我可以在固定更新中使用rigidbody.AddForce 来计算每帧的力,这将导致已经具有行为计算的Vector3 Velocity?

澄清一下,我有速度,我需要强制调用 Fixedupdate 以达到/保持该速度。我不太确定到底需要什么样的解决方案,所以如果这是一个愚蠢的问题,我深表歉意。我只是不知道我应该如何处理它。

谢谢!

标签: unity3d

解决方案


要计算达到速度所需的力的大小,您需要使用等式 Ft=mV - mU 其中 F = 力,t = 时间,m = 质量,V = 所需速度,U = 当前速度。

假设您的起始速度为 0,等式将如下所示:

Vector3 force = (rigidbody.mass * desiredVelocity) / Time.fixedDeltaTime;

desiredVelocity应该是您希望对象移动的方向的 Vector3。

如果对象已经在移动,请使用:

Vector3 force = ((rigidbody.mass * desiredVelocity) - (rigidbody.mass * rigidbody.velocity)) / Time.fixedDeltaTime;

推荐阅读