首页/ 第 7 章 · 物理系统/ 第 97 课
LESSON 97 · 物理系统

刚体约束与 Sleep、碰撞检测模式

约束与检测模式已掌握。下一课学关节 Joint。

⏱ 约 13 分钟📊 难度:入门🗂 第 7 章 · 物理系统📍 第 97 / 300 课
课程进度
97 / 300

🎯本节学习目标

  • 掌握刚体约束冻结
  • 理解 Sleep 机制
  • 掌握碰撞检测模式

🚀课程导读

“让车轮只滚不滑”“防止高速穿透”……本课解决物理进阶细节。

刚体 Constraints 约束

冻结某些轴的移动/旋转。

  1. 在刚体组件的【Constraints】区域,有 Freeze Position(冻结位置)与 Freeze Rotation(冻结旋转)。
  2. 每个轴可单独勾选:Freeze Position Y 勾选 = 物体不会沿 Y 轴移动(可用于锁定高度)。
  3. Freeze Rotation X/Z 勾选 = 物体不会向侧倾倒(做“不倒的角色”常用)。
  4. 【应用】角色/车辆防止翻倒:冻结 Rotation X 和 Z。
  5. 【应用】只让物体水平移动:冻结 Position Y。
  6. 【应用】飞机不翻滚:冻结部分旋转轴。
  7. 【注意】约束对刚体“物理运动”生效;transform 直接改位置仍可动。
💡
角色控制器常用:冻结旋转 X/Z,避免人物被撞倒乱滚。

Sleep 休眠与碰撞检测

性能与防穿透。

  1. 【Sleep 休眠】刚体静止一段时间后进入“睡眠”,停止物理计算,省性能。
  2. 【唤醒】受到碰撞/力时自动唤醒。
  3. 【判断休眠】rb.IsSleeping() 返回 bool;rb.Sleep()/rb.WakeUp() 手动控制。
  4. 【Sleep Threshold】刚体属性:休眠阈值(速度低于此值即入睡),调小更不易睡(默认 0.005)。
  5. 【Collision Detection 碰撞检测模式】
  6. Discrete(离散,默认):速度太快可能穿透薄墙。
  7. Continuous:持续检测,防止高速穿透(对快速子弹/角色推荐,成本略高)。
  8. Continuous Dynamic:与 Continuous 配合的动态对象。
  9. Continuous Speculative:折中方案。
  10. 【应用】高速子弹、快速移动角色设 Continuous,避免“穿墙”。
⚠️
高速物体穿透是经典 bug,设置 Collision Detection=Continuous 能解决,但别全开(性能)。

常见错误与排查

错误:角色撞一下就被撞飞乱滚?
原因:旋转未冻结
解决:在刚体 Constraints 里勾选 Freeze Rotation X 与 Z。

动手练习

课后小任务(做出来才算真的学会)

  • 做一个只水平移动不倾倒的方块
  • 体验刚体休眠与唤醒
  • 给高速子弹设 Continuous 防穿透

本节小结

约束与检测模式已掌握。下一课学关节 Joint。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课触发器 Trigger 与碰撞事件