首页/ 第 13 章 · 2D 游戏开发/ 第 206 课
LESSON 206 · 2D 游戏开发

2D 刚体与物理

2D 刚体已掌握。下一课学 2D 碰撞体。

⏱ 约 13 分钟📊 难度:入门🗂 第 13 章 · 2D 游戏开发📍 第 206 / 300 课
课程进度
206 / 300

🎯本节学习目标

  • 掌握 Rigidbody2D 类型
  • 掌握重力与速度
  • 掌握物理移动方式

🚀课程导读

Rigidbody2D 让 2D 物体“像真的”:受重力、能碰撞、有速度。本课讲透。

Rigidbody2D 属性

2D 刚体的“开关”。

  1. 【添加】给要物理运动的物体加 Rigidbody2D。
  2. 【Body Type】三种:
  3. Dynamic(动态):受重力/力/碰撞(默认,角色、掉落物)。
  4. Kinematic(运动学):不受力,用代码移动,能推动动态物体(移动平台、传送带)。
  5. Static(静态):不动(用于静止的墙/地面——其实地面多用 Collider 不配刚体)。
  6. 【Gravity Scale】重力系数:1=正常、0=无重力(漂浮物)、负=向上。
  7. 【Mass】质量(影响碰撞响应)。
  8. 【Linear Drag / Angular Drag】线性/角阻尼(空气阻力,越大越“肉”)。
  9. 【Constraints】约束:Freeze Position/Rotation 锁定某方向(2D 角色锁 Z 旋转)。
  10. 【Interpolate】插值:平滑运动(物体抖动时开启)。
  11. 【Collision Detection】碰撞检测(高速物用 Continuous,第 93 课)。
  12. 【注意】2D 用 Rigidbody2D,别和 3D Rigidbody 混用!
💡
Rigidbody2D 记忆:Dynamic 会动、Kinematic 手动、Static 不动;Gravity 定轻重。

物理移动方式

怎么让物体动。

  1. 【方式1 直接设速度(推荐)】rb.velocity = new Vector2(x, y);
  2. 简单可控、无惯性,2D 平台角色首选。
  3. 【方式2 加力】rb.AddForce(new Vector2(1, 0), ForceMode2D.Impulse);
  4. 有加速度与惯性(物理弹射、爆炸)。
  5. 【方式3 移动位置】rb.MovePosition(Vector2 新位置);
  6. 平滑移动(移动平台用 MovePosition 更稳)。
  7. 【方式4 改 Transform】直接改 transform.position(绕过物理,慎用——会破坏物理)。
  8. 【推荐】角色用 velocity、受击/爆炸用 AddForce、平台用 MovePosition。
  9. 【读取速度】rb.velocity.magnitude 判断是否在动(动画切换)。
  10. 【速度限制】rb.velocity = new Vector2(Mathf.Clamp(rb.velocity.x, -max, max), rb.velocity.y);
  11. 【注意】在 FixedUpdate 里改物理状态(第 91 课)。
  12. 【实战】给一个箱子:静置落地、被推走(AddForce)、撞墙停。
  13. 【完成】2D 物理“活”了。
移动方式选择:角色=速度、爆炸=力、平台=MovePosition。别用 Transform 硬改。

常见错误与排查

错误:物体穿墙/乱飞?
原因:刚体类型错误或碰撞检测设置不对
解决:确认 Collider2D 存在;高速物 Collision Detection 设 Continuous。

动手练习

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

  • 认识三种 Body Type
  • 用 velocity 控制角色、AddForce 做弹射
  • 锁定 Z 旋转防止倒地

本节小结

2D 刚体已掌握。下一课学 2D 碰撞体。

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

← 上一课2D 角色控制(移动与跳跃)