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

2D 物理材质(摩擦与弹性)

2D 物理材质已掌握。下一课学 2D 射线。

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

🎯本节学习目标

  • 理解物理材质
  • 创建物理材质
  • 应用材质

🚀课程导读

冰面滑、球弹得高——由 Physics Material 2D 控制摩擦与弹性。本课掌握。

创建物理材质 2D

两个参数控制手感。

  1. 【创建】Project 右键 → Create → Physics Material 2D。
  2. 【属性】
  3. Friction 摩擦:0=光滑(冰面)、1=粗糙。
  4. Bounciness 弹性:0=不弹(石头)、1=高弹(球)。
  5. 【应用】把材质拖到 Collider2D 的【Material】槽。
  6. 【区分】Physics Material 2D 与 3D 版本不同(2D 用 2D 版)。
  7. 【示例】
  8. 冰面:Friction 0.02。
  9. 橡胶球:Bounciness 0.8。
  10. 地毯:Friction 0.8。
  11. 【注意】材质作用于“碰撞体”,不是刚体。
  12. 【改材质】修改材质会作用于所有用它碰撞体(共享材质)。
  13. 【测试】做几个球体在不同材质地面上的表现对比。
💡
物理材质两个数:Friction 管“滑不滑”、Bounciness 管“弹不弹”。调手感神器。

实战:平台跳跃手感

让角色“站得住”。

  1. 【问题】2D 角色在斜坡上滑、落地不弹但“黏”?
  2. 【角色碰撞】给角色 Collider2D 用 Friction 1 的材质(防滑)。
  3. 【平台】地面用 Friction 0.6 左右。
  4. 【弹性需求】需要弹跳平台:平台材质 Bounciness 1,角色撞上自动弹起。
  5. 【配合】弹跳平台:Bounciness 1 + 角色的垂直速度清零再弹(代码可控):
  6. void OnCollisionEnter2D(Collision2D other) {
  7. if (other.gameObject.CompareTag("BouncePad")) { rb.velocity = new Vector2(rb.velocity.x, bounceForce); }
  8. }
  9. 【测试】分别做:普通地面、冰面(滑)、弹跳台(弹)。
  10. 【注意】Friction 对 velocity 直接设置的角色移动影响有限(速度法不受摩擦),但影响受力/斜坡。
  11. 【完成】场景“手感”多样了!
  12. 【进阶】材质叠加区域(水塘减速)用触发器改 drag(第 206 课)。
2D 手感配方:角色防滑(Friction 1)+ 平台弹跳(Bounciness)+ 特殊区改 drag。

常见错误与排查

错误:角色站斜坡一直滑?
原因:摩擦太小或没有碰撞贴合
解决:角色 Collider 用高摩擦材质;斜坡用 PolygonCollider2D 贴合。

动手练习

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

  • 创建冰面与橡胶两种物理材质
  • 做弹跳平台
  • 测试不同摩擦的移动手感

本节小结

2D 物理材质已掌握。下一课学 2D 射线。

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

← 上一课2D 碰撞体