Agent Skills
返回列表
🤖

Unity 3D 物理引擎

AI Agent 更新于 2026.08.30

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

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unity-physics-sh-t9p516。

技能介绍

要解决什么问题

在 Unity 6 里给物体加重力、施力、碰撞反馈时,很容易踩到帧率相关的抖动、刚体被 transform.position 瞬移穿透、触发器不回调、高速物体穿墙等问题。本技能围绕内置 PhysX 3D 物理(Rigidbody + Collider),把 FixedUpdate 纪律、碰撞与触发器语义、以及 Layer Collision Matrix 讲清楚,目标版本是 Unity 6 (6000.0 LTS)。

技能如何组织工作流

核心步骤可以概括为:

  • 需要被模拟的物体挂 Rigidbody;需要被命中的物体挂 Collider(双方都要有 Collider,且至少一侧有 Rigidbody)。
  • 输入在 Update 读,物理在 FixedUpdate 做:存意图后,用 AddForce、linearVelocity 或 MovePosition 驱动,不要在 Update 里施力。
  • 不要用 Transform 直接改动态刚体位置;运动应走物理 API,否则碰撞解算会被跳过。
  • Solid collision 会阻挡并触发 OnCollisionEnter;勾选 Is Trigger 的 Collider 可穿透并走 OnTriggerEnter。
  • 用 Physics Layer 裁剪无关碰撞对,必要时用带 LayerMask 的射线做地面检测;复杂射线与关节细节可对照技能内 references。

技能还给出典型模式:FixedUpdate 里带速度钳制的力驱动移动、碰撞/触发回调、地面射线、以及仍能推挤其它刚体的 kinematic 平台。

适用边界与注意点

  • Unity 6 重命名:Rigidbody.velocity 已弃用,应使用 Rigidbody.linearVelocity;旧教程代码可能无法编译或报警。
  • 2D 物理(Rigidbody2D / Collider2D)是另一套 API,概念可借鉴但类型不同。
  • 触发器要生效:至少一侧需 Rigidbody,且两侧 Collider 启用;两个静态触发器不会报告重叠。
  • 高速穿透(tunneling)可把 Collision Detection 设为 Continuous / Continuous Dynamic;非均匀缩放的 MeshCollider 易出问题,优先 primitive 并保持 uniform scale。
  • 手感与步长、抖动、CCD 等跨引擎调参 → 相关 physics-tuning;纯输入驱动移动 → unity-input-system;非力驱动的寻路移动 → unity-navmesh。

使用场景

  • 在 Unity 6 LTS 关卡里给可推动物体挂 Rigidbody,用 FixedUpdate 的 AddForce 做移动并钳制最大速度
  • 玩家跳跃前用带 LayerMask 的 Physics.Raycast 做地面检测,避免 Update 里直接改 transform.position
  • 拾取区、伤害盒设为 Is Trigger 后 OnTriggerEnter 不触发时,按技能清单核对 Rigidbody 与 Collider 启用关系
  • 子弹或高速物体穿墙时,把 Rigidbody 的 Collision Detection 改为 Continuous 并收紧物理层矩阵

适合人员

  • 维护 Unity 6(6000 LTS)玩法代码、要把输入读入与 PhysX 施力严格拆到 Update / FixedUpdate 的游戏程序员
  • 搭建含 Rigidbody + Collider 的 Prefab,需要通过 Physics Layer 与碰撞矩阵降低无关碰撞开销的关卡或技术美术
  • 从 Unity 5/旧教程迁移项目、遇到 velocity 弃用告警并需统一改用 linearVelocity 的 Unity C# 维护者
  • 做可移动平台或关节玩法时,需要区分 solid collision 与 trigger 回调,并查阅射线与 Joint 参考的玩法系统工程师