在游戏中执行物理
Implementing physics in game
我正在开发保龄球游戏。我无法实现物理,如碰撞检测,球的运动(力和摩擦)和旋转。有人能帮帮我吗?
我们不能教你物理,但MIT可以。
如果这是你的第一款游戏,同时你也在学习图像编程,我建议你使用预构建的物理库,如Bullet。
编辑:这里有一个大的物理引擎列表。
我可以建议你使用托卡马克物理引擎,如果你不想自己实现所有这些东西。我记得习惯这个引擎不需要花很多时间。
或者你可以找到另一个物理引擎
你最好使用物理库,比如Open Dynamics Engine。ODE有一个C/c++接口,因为您标记为c++,所以它可能对您有用。它是开源的,速度非常快,适用于游戏。如果你真的想进入物理并尝试自己实现,这是相当多的工作,但如果你对那类事情感兴趣,那就很有趣了。
基本思想是跟踪所有运动场物体(球、瓶、地板等)的所有物理参数(位置、速度、加速度、旋转速度等)。然后在一个固定的时间间隔,比如每10毫秒,你更新物理参数,因为它们在这个时间间隔内发生了变化,考虑到所有的物理定律(f = m * a
类型的东西)和物理相互作用(碰撞,摩擦,其他施加的力)。获取输出并重新绘制游戏场对象。
这是简化的解释。还有很多其他事情需要担心,比如当你有很多游戏对象需要交互时,数值稳定性和性能。当你试图为最简单的几何原语以外的东西做碰撞检测时,数学也会变得相当复杂。这就是为什么如果你只想专注于自己的游戏,最好学习第三方引擎。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- Craps游戏在循环不满足退出条件时执行
- 如何在 GLFW 中为游戏引擎执行正确的输入类
- 如何在游戏运行时创建新函数并执行它
- 使用CreateProcess运行游戏可执行文件
- 为什么我的游戏循环不执行
- 游戏有时不会执行随机选择的策略
- 在游戏中执行物理
- 在完成游戏编程后,如何在可执行文件中绑定资产并将其打包,以便分发给其他人