unity3d - 使用 AddForce 改变刚体的速度?
问题描述
我制作了一个刚体控制器,它基于控制固定更新内部对象的速度。只有当我完成时,我才意识到这个链接说你应该在固定更新中使用rigidbody.velocity,因为它会导致不良行为。
是否有我可以使用的数学方程或某种解决方案,以便我可以在固定更新中使用rigidbody.AddForce 来计算每帧的力,这将导致已经具有行为计算的Vector3 Velocity?
澄清一下,我有速度,我需要强制调用 Fixedupdate 以达到/保持该速度。我不太确定到底需要什么样的解决方案,所以如果这是一个愚蠢的问题,我深表歉意。我只是不知道我应该如何处理它。
谢谢!
解决方案
要计算达到速度所需的力的大小,您需要使用等式 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;
推荐阅读
- php - php firebase推送通知ios:错误无效注册
- php - 在 mac osX 上升级到 php 7.4
- c++ - 使用 iptables 共享来自两个不同连接的 Internet 连接
- java - 在Spring配置中模拟命名bean而不使用allow-bean-definition-overriding?
- jquery - 如何避免在悬停时重新缩放?
- android - Dagger Hilt - 如何将 ViewModel 注入适配器?
- apache-kafka - 暂停和恢复 KafkaConsumer
- javascript - 在 DataTable 中未按 id 找到元素
- flutter - 我们可以在没有 Slivers 的情况下滚动时缩小小部件吗?
- typescript - 通过 ES6 导入导入 commonJS 模块,类型'typeof import 上不存在属性