物理模拟
中级 程序员
Stride 的物理由 Simulation 类控制。 你可以通过游戏设置中的配置节来改变 Stride 初始化 Simulation 的方式。
这些设置控制着物理模拟(Physics Simulation)运行所遵循的规则和参数,从而可以自定义和微调物理环境,以满足你游戏的需求。 你还可以创建多个模拟,并根据需要将物理对象分配到不同的模拟中。
有关每个属性作用的更多细节,请查看 API。
碰撞层与碰撞矩阵
你可以将物理对象分配到特定的碰撞层(Collision Layer),然后可以将这些层设置为忽略分配到其他层的对象。
这些规则可以通过在运行时修改碰撞矩阵,或通过编辑器中的 Layer[...] 字段来设置。
例如,点击 Layer0 旁边的 Change values... 并取消勾选 Layer1,将使 Layer0 上的所有对象穿过 Layer1 上的对象。
获取 Simulation
有多种方法可以从你的 ScriptComponent 内部获取这个 BepuSimulation 的引用:
- 推荐的方式是通过物理组件的引用,例如
myBody.Simulation,这是最快的方式。 - 或者通过
Entity.GetSimulation()扩展方法。
性能注意事项
以下内容摘自 Bepu 的文档中的相关片段。
如果物理在第一次模拟时导致你的游戏卡住一段时间,这可能与即时(JIT)编译有关。如果这成为一个问题,可以考虑在加载屏幕背后运行一个小型模拟来命中所有相关代码路径(一堆带有约束的对象发生碰撞)。使用预先(AOT)编译工具链也可以解决问题。