Appearance
2D 物理系统
概念
Unity 2D 物理系统专门处理 2D 游戏里的“运动、碰撞、触发、射线检测”。它和 3D 物理是两套系统,做 2D 时组件和 API 基本都带 2D。
核心公式
2D 物理对象 = GameObject + SpriteRenderer + Collider2D + Rigidbody2DSpriteRenderer 负责显示图片;Collider2D 负责定义碰撞范围;Rigidbody2D 负责让对象进入物理模拟,比如重力、速度、受力、碰撞响应。
最重要的几个概念
Rigidbody2D:让对象“被物理系统管理”。常看 Body Type、Mass、Gravity Scale、Linear Damping、Constraints、Collision Detection。
Collider2D:对象的碰撞形状。常用 BoxCollider2D、CircleCollider2D、CapsuleCollider2D、PolygonCollider2D、EdgeCollider2D、CompositeCollider2D。
Body Type: Dynamic 适合玩家、箱子、球,会受重力和力影响。 Kinematic 适合电梯、移动平台,由代码控制运动。 Static 适合地面、墙、固定障碍,不建议频繁移动。
Collision 和 Trigger: Collision 是真实碰撞,会挡住、推开。 Trigger 不挡住,只检测进入、停留、离开,适合金币、传送门、伤害区域。
FixedUpdate:物理逻辑通常放这里,比如设置 linearVelocity、AddForce、MovePosition。输入可以在 Update 读,真正影响物理的动作建议在 FixedUpdate 执行。
参考链接:
- Unity Manual: 2D physics
- Unity Manual: Rigidbody 2D
- Unity Manual: Rigidbody 2D body types
- Unity Manual: Collider 2D
- Unity Manual: Physics 2D settings
- Unity Scripting API: Rigidbody2D.AddForce
- Unity Scripting API: OnCollisionEnter2D
- Unity Scripting API: OnTriggerEnter2D
- Unity Scripting API: Physics2D.Raycast