Defold 包含一个修改版的 Box2D 物理引擎 (版本 2.2.1) 用于模拟2D物理效果和一个 Bullet physics 引擎 (版本 2.77) 用来模拟3D物理效果. 物理引擎可以基于牛顿物理定律模拟各种 碰撞物体 运动碰撞时的物理效果. 本教程介绍了物理引擎的使用方法.
Defold 中的物理相关教程如下:
另外还可以向物理碰撞对象施加 约束, 称为 关节, 用以向碰撞对象进行物理约束或者力的施加. 详见 物理关节教程.
还可以通过向物理世界发出射线以便了解各个物体的位置情况, 称为 投射. 详见 物理投射教程.
设计上按照牛顿物理学单位米, 千克和秒 (MKS) 的标准单位. 模拟物尺寸 0.1 到 10 米范围 (静态对象可以更大) 效果较好, 默认一像素 (pixel) 当作 1 米. 这种转换比例是物理模拟器层次上的, 对游戏来说并不适用. 默认一个200像素的物体在物理世界相当于200米超过了最佳模拟范围. 一般需要对游戏里的物体进行物理上的缩放. 可以在 game.project 里的 物理缩放设置 处指定缩放值. 比如设置为 0.02 意味着 1:50, 那么200像素就是 4 米. 注意重力 (也在 game.project 里进行设定) 也需要基于缩放值进行调整.
推荐以固定帧率更新物理引擎 (而不是依据游戏不稳定的更新频率) 以模拟稳定的物理效果. 可以在 game.project 文件的 Physics 部分中勾选 Use Fixed Timestep setting 以启用固定帧率物理更新. 帧率由 game.project 文件的 Engine 部分中的 Fixed Update Frequency setting 配置决定. 当物理引擎使用固定帧率更新时推荐使用 fixed_update(self, dt)
生命周期函数来对游戏中的物体的交互进行处理, 例如对物体施加一个力.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB