物理引擎是游戏引擎中非常重要的组成部分,主要负责以下功能:
为了满足不同应用场景的需求,Galacean 采用了多后端设计:
两个后端实现了统一的 物理系统 API,开发者可以根据项目需求灵活选择。有关物理系统的详细设计说明,请参考 设计文档.
对于需要使用物理组件或 InputManager
等需要 Raycast 拾取的场景,都需要在使用之前初始化物理引擎。
目前 Galacean 引擎提供两种内置的物理引擎后端实现:
选择物理后端需要考虑功能,性能和包尺寸这三个因素:
功能 | physics-lite | physics-physx |
---|---|---|
碰撞检测 | ✓ | ✓ |
物理效果及反馈 | × | ✓ |
连续碰撞检测 | × | ✓ |
关节系统 | × | ✓ |
开发者可以在 主菜单 界面打开的 项目设置 面板中设置物理后端。
若通过脚本初始化引擎,只需要将物理后端对象传入 Engine
中即可:
import {LitePhysics} from "@galacean/engine-physics-lite";
const engine = await WebGLEngine.create({
canvas: htmlCanvas,
physics: new LitePhysics(),
});
import { PhysXPhysics } from "@galacean/engine-physics-physx";
const engine = await WebGLEngine.create({
canvas: htmlCanvas,
physics: new PhysXPhysics(),
});
有关物理系统的详细使用,请参考以下文档: