在游戏中执行物理

Implementing physics in game

本文关键字:执行 游戏      更新时间:2023-10-16

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

我们不能教你物理,但MIT可以。

如果这是你的第一款游戏,同时你也在学习图像编程,我建议你使用预构建的物理库,如Bullet。

编辑:这里有一个大的物理引擎列表。

我可以建议你使用托卡马克物理引擎,如果你不想自己实现所有这些东西。我记得习惯这个引擎不需要花很多时间。

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

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

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

这是简化的解释。还有很多其他事情需要担心,比如当你有很多游戏对象需要交互时,数值稳定性和性能。当你试图为最简单的几何原语以外的东西做碰撞检测时,数学也会变得相当复杂。这就是为什么如果你只想专注于自己的游戏,最好学习第三方引擎。