碰撞器(Collider)是一种用于检测和响应物理碰撞的组件。引擎提供以下几种碰撞器:
类型 | 描述 | 适用场景 |
---|---|---|
StaticCollider | 静态碰撞器,不会移动但可与其他物体碰撞 | 地面、墙壁等静态物体 |
DynamicCollider | 动态碰撞器,受物理引擎影响可自由运动 | 可移动物体、射弹等 |
CharacterController | 专门用于角色控制的碰撞器 | 玩家角色、NPC等 |
碰撞器组件用于定义物体的物理属性和碰撞行为。Galacean 物理系统提供了三种类型的碰撞器:
动态碰撞器
动态碰撞器可以自由运动并受物理力的影响,适用于需要物理模拟的可移动物体,如投掷物、可推动的箱子等。
静态碰撞器
静态碰撞器固定在场景中不会移动,通常用于创建固定的物理障碍物,如地面、墙壁等。
角色控制器
角色控制器是专门为角色移动设计的碰撞器,支持斜坡行走、台阶攀爬等特性,适用于第一人称或第三人称游戏中的角色控制。
所有碰撞器类型都具有以下共同特征:
目前支持了四种 碰撞形状
,但不同的后端物理包支持程度不同,具体如下:
名称 | 解释 | 支持的后端物理包 |
---|---|---|
BoxColliderShape | 盒形碰撞外形 | physics-lite, physics-physx |
SphereColliderShape | 球形碰撞外形 | physics-lite, physics-physx |
PlaneColliderShape | 无界平面碰撞外形 | physics-physx |
CapsuleColliderShape | 胶囊碰撞外形 | physics-physx |
变换同步:
碰撞形状
可以设置相对于实体的局部偏移和旋转碰撞/触发事件:碰撞器在与其他碰撞器交互时可以生成碰撞和触发器事件。有关这些事件的详细信息以及如何处理它们,请参阅碰撞事件文档。
性能优化
动态碰撞器设置
角色控制器配置
使用场景
// 添加静态碰撞器
const staticCollider = entity.addComponent(StaticCollider);
// 添加动态碰撞器
const dynamicCollider = entity.addComponent(DynamicCollider);
// 添加角色控制器
const characterController = entity.addComponent(CharacterController);