Agent Skills
返回列表
💻

Unity 物理引擎

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unity-physics-w011 到当前 AI 助手。

技能介绍

要解决的问题

让场景里的物体真正"有重量"并不是给 Transform 写几行位移代码就完事的。你需要处理重力、碰撞推开、触发器检测、快速移动物体穿墙、层之间的交互过滤。这些细节散落在 Rigidbody、Collider、FixedUpdate 和 Project Settings 里,写错了往往表现为物体抖动、穿模或者回调不触发,而且很难一眼定位原因。

核心工作方式

这个技能把 Unity 6 内置物理(PhysX)的常规流程收敛成一套可复用的纪律:

  • 组件分工:需要被模拟的物体加 Rigidbody,需要被命中的物体加 Collider。一次有效碰撞要求双方都有 Collider,且至少一方有 Rigidbody。
  • 物理放进 FixedUpdate:在 Update 里读输入、存意图,在 FixedUpdate 里施加力、设置 linearVelocity 或调用 MovePosition。
  • 只用物理 API 移动刚体:用 AddForce、linearVelocity、MovePosition,绝不直接给非运动学刚体赋值 transform.position——那会让物体瞬移并跳过碰撞解算。
  • 分清 collision 与 trigger:勾选 Is Trigger 的 Collider 会被穿透并触发 OnTriggerEnter;普通碰撞则会阻挡并回调 OnCollisionEnter。
  • 用层整理交互:给物体分层,并在 Project Settings → Physics 里编辑 Layer Collision Matrix,避免无关物体互相检测。
  • 验证手段:用 Physics Debugger 检查,快速物体穿墙时把 Collision Detection 调成 Continuous 或 Continuous Dynamic。

常见坑

几个最容易踩的:直接给动态刚体写 transform.position 导致穿模;在 Update 里施力导致帧率相关的抖动;两个静态 trigger Collider 之间不会上报重叠;非均匀缩放的 MeshCollider 行为异常;忘记 Unity 6 把 Rigidbody.velocity 改名为 linearVelocity,老教程代码会编译告警。

适用边界

这套内容只覆盖 Unity 6(6000.0 LTS)的 3D 物理。2D 用的是 Rigidbody2D / Collider2D 独立 API,概念相通但类型不同。手感调优(固定步长、抖动、CCD 稳定性)交给 physics-tuning,输入驱动移动交给 unity-input-system,都不是这个技能的目标。

使用场景

  • 在 Unity 6 中给主角加跳跃力并限制速度,需要区分 ForceMode.Impulse 与 ForceMode.VelocityChange。
  • 两个静态物体的 trigger 始终不触发 OnTriggerEnter,需要排查是否缺 Rigidbody 或 Collider 未启用。
  • 子弹等高速物体穿过墙壁,需要把 Collision Detection 调成 Continuous Dynamic。
  • 大量物体互相检测碰撞导致性能浪费,需要在 Layer Collision Matrix 中裁剪无关层的交互。

适合人员

  • Unity 6 客户端工程师,需要在新场景里为可交互物体正确组合 Rigidbody 与 Collider。
  • 玩法系统程序员,正在编写基于碰撞与触发回调的伤害判定或机关逻辑。
  • 技术美术或性能工程师,在排查刚体抖动、穿模与层交互过度检测的原因。