在游戏中实现物理

时间:2011-04-23 19:41:43

标签: c++

我正在开发保龄球游戏。我无法实现物理,如碰撞检测,球运动(力和摩擦力)和旋转。有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:3)

我们无法教你的物理,但是MIT will

如果这是你的第一款游戏并且你正在同时学习图形编程,我建议使用预建的物理库,例如Bullet

编辑:有一大堆物理引擎here

答案 1 :(得分:1)

我可以建议你使用tokamak物理引擎,如果你不想自己去做所有这些事情。我记得习惯这个引擎并不需要花费很多时间。

或许你可以找到另一个物理引擎。

答案 2 :(得分:0)

最好的办法是使用物理库,例如Open Dynamics Engine。 ODE有一个C / C ++接口,因为你标记为C ++它可能对你有用。它是开源的,非常快,适用于游戏。如果你真的想进入物理学并尝试自己实现,这是相当多的工作,但如果你有这样的事情,那就很有趣。

基本思路是跟踪所有运动场物体(球,别针,地板等)的所有物理参数(位置,速度,加速度,转速等)。然后在规则的时间间隔,比如说每10毫秒,你更新物理参数,因为它们在这个时间间隔内发生变化,考虑了所有物理定律(f = m * a类型的东西)和物理相互作用(碰撞,摩擦,其他)施加的力量)。获取输出并重新绘制playfield对象。

这是简化的解释。还有很多其他的事情需要担心,比如当你有很多交互场所对象进行交互时的数值稳定性和性能。当你尝试对最简单的宝石原语进行碰撞检测时,数学也变得非常复杂。这就是为什么如果你只想专注于你的游戏,最好学习第三方引擎。