Unity中玩家挂载Rigidbody与Collider仍穿透地面掉落如何解决?
Unity碰撞穿透问题修复方案

- 检查Rigidbody挂载必要性与配置:如果地面是固定不动的场景物体,不需要挂载Rigidbody组件,仅保留Collider即可;如果地面需要动态运动,必须勾选Rigidbody的
Is Kinematic选项,避免地面本身受重力影响产生异常位移导致碰撞失效。 - 调整碰撞检测模式:选中玩家的Rigidbody组件,将
Collision Detection参数从默认的Discrete改为Continuous(适用于快速运动物体和静态物体碰撞的场景),如果场景中还有其他快速运动的碰撞对象,可以改为Continuous Dynamic,减少高速运动下的碰撞漏判。 - 核对Collider配置:检查玩家和地面的Collider边界是否和模型匹配,没有过度缩小、偏移的情况,同时确认两个物体初始状态下Collider没有重叠,初始重叠会导致物理引擎直接判定两物体错位分离,出现穿模掉落。
- 优化物理引擎全局配置:打开
Edit > Project Settings > Physics(3D项目)/Physics 2D(2D项目),将Default Contact Offset数值调小,降低碰撞判定的容错阈值;也可以适当调小Fixed Timestep数值(比如从默认0.02改为0.01),提升物理帧计算频率,减少漏判概率。 - 排查代码逻辑问题:确认玩家位移逻辑是通过
Rigidbody.AddForce、Rigidbody.MovePosition这类物理接口实现,不要直接修改Transform.position,直接修改Transform会跳过物理碰撞计算,强行位移会导致穿模。
内容的提问来源于stack exchange,提问作者Skreety
相关产品推荐
相关产品推荐

