用途:面向 Unity 游戏开发中的物理系统,整理角色移动与控制器、碰撞检测、触发器区域、弹丸物理、布娃娃等场景的实现模式,重点解决穿地、穿透等常见问题。
主要能力:
- 角色控制器安全——用 SphereCast 做地面检测,落地时给 y 速度一个小负值保持贴地,并在每帧后把角色位置钳制到地面,避免穿地。
- 基于物理的角色移动——用 Rigidbody 加力移动,地面/空中使用不同阻尼,限制水平速度;设置 ContinuousDynamic 与 Interpolate 防止穿透。
- 碰撞处理——在 OnCollisionEnter/OnTriggerEnter 中先判空、判 contactCount,再触发安全事件。
- 图层碰撞——用常量定义玩家、敌人、弹丸、环境图层,通过 Physics.IgnoreLayerCollision 与 LayerMask 过滤碰撞。
- 防止穿透——快速物体设置 ContinuousDynamic,并手动用 Raycast 检测上一帧到当前帧的路径;高速移动时分步(子步进)推进。
- 物理查询——SphereCast 地面检测、OverlapSphereNonAlloc 区域检测并按类型筛选。
- 性能优化——移动端/桌面端不同的求解器迭代、sleepThreshold、fixedDeltaTime 设置,以及用 RaycastCommand 与 Job System 批量射线检测。
使用方式:将示例类挂载到对应 GameObject,在 Inspector 中设置速度、重力、地面检测距离与地面图层等序列化字段;图层常量与 IgnoreLayerCollision 可在初始化时调用。
限制:资料未提供安装命令、包名、依赖版本、收费信息或官方文档链接,这些信息暂未提供;示例代码需按项目实际调整图层与参数。