我有一个3D物体在移动,我需要能够对它施加力,例如重力。在2D中,我只是将其移动存储在dx和dy中,但由于这是3D,我使用的是Vector3D direction
和float speed
。如何通过使用applyForce(Vector3D force)
?
答案 0 :(得分:1)
牛顿第二定律给出了加速度与施加的力成比例。因此,一种非常简单的方法是前向整合,例如, (紧凑的伪代码)
class Object {
Vector3D position;
Vector3D velocity;
float mass;
updatePhysics(Vector3D force, float dt) {
velocity += (1.0/mass) * force * dt;
position += velocity * dt;
}
}
当然,在现实生活中存在例如数字不稳定性和时间增量选择的问题。如果您尝试执行一次性计算,或者这是用于3D游戏,我从您的问题中无法理解。如果是后者,我建议您查看物理库,例如Bullet Physics,您将免费获得很多。