U
Unity
星辰学院
首页
课程表
章节导览
第 1 课
返回主站
首页
/
第 13 章 · 2D 游戏开发
/
第 207 课
LESSON 207 · 2D 游戏开发
2D 碰撞体
2D 碰撞已掌握。下一课学 2D 物理材质。
⏱ 约 13 分钟
📊 难度:
入门
🗂 第 13 章 · 2D 游戏开发
📍 第 207 / 300 课
课程进度
207 / 300
🎯
本节学习目标
掌握碰撞体类型
掌握碰撞回调
掌握触发器
🚀
课程导读
碰撞体是 2D 物体的“身体”:决定能不能撞、能不能踩、能不能触发。本课掌握。
◆
2D 碰撞体类型
按形状选。
【BoxCollider2D】矩形:箱子、墙面、平台(最常用)。
【CircleCollider2D】圆形:球、轮子、碰撞手感更圆润。
【CapsuleCollider2D】胶囊:角色(两头圆矩形,贴合人形)。
【PolygonCollider2D】多边形:自定义复杂形状(地形、异形物体)。
【EdgeCollider2D】边线:只当“边”(悬崖边缘、围墙线)。
【添加】选中物体 → Add Component → 搜 Collider2D 类型。
【调整】Scene 视图里拖动碰撞体边框贴合精灵(或用 Edit Collider 编辑)。
【Is Trigger】勾选=触发器(不阻挡、只触发事件)。
【共享】多个 Collider2D 可叠加(复合身体)。
【贴合】用精灵大小自动生成:Sprite 加 Polygon Collider 自动贴合轮廓。
【注意】碰撞体决定“物理范围”,与精灵显示大小要匹配。
💡
碰撞体选择:角色=Capsule、方块=Box、圆形物=Circle、复杂地形=Polygon。贴合精灵是关键。
◆
碰撞与触发回调
碰撞时“喊”代码。
【碰撞回调】OnCollisionEnter2D / OnCollisionStay2D / OnCollisionExit2D:
void OnCollisionEnter2D(Collision2D other) {
if (other.gameObject.CompareTag("Enemy")) { TakeDamage(); }
}
【触发回调】OnTriggerEnter2D / OnTriggerStay2D / OnTriggerExit2D:
void OnTriggerEnter2D(Collider2D other) {
if (other.CompareTag("Coin")) { CollectCoin(); }
}
【前提】要有碰撞的双方:一方有 Rigidbody2D;至少一方 Collider 是 Trigger(触发)。
【参数】other.gameObject 拿到撞到的对象;CompareTag 判断类型。
【区别】OnCollision 是物理阻挡的碰撞;OnTrigger 是“穿过去”的触发(金币、传送门)。
【层】用 Layer(第 88 课)过滤碰撞:Edit → Project Settings → Physics2D 设置 Layer 碰撞矩阵。
【注意】被触发对象(如金币)用 Is Trigger,不需要 Rigidbody 也能被触发(但建议加)。
【实战】金币(Trigger)+ 玩家:进入触发 CollectCoin。
【完成】碰撞体系“活了”。
✅
碰撞 vs 触发:阻挡用 OnCollision、穿过/拾取用 OnTrigger。记住这句够用。
⚠
常见错误与排查
⛔
错误:
触发器没触发?
原因:
没有 Rigidbody2D、或不是 Trigger、或 Tag 不匹配
解决:
确认一方有 Rigidbody2D;触发方 Collider 勾 Is Trigger;Tag 正确。
★
动手练习
课后小任务(做出来才算真的学会)
给角色加 Capsule、地面加 Box 碰撞
实现 OnCollision2D 撞敌扣血
实现金币 Trigger 拾取
✓
本节小结
2D 碰撞已掌握。下一课学 2D 物理材质。
标记为已完成
完成打卡后,主站会实时更新你的学习进度 🎯
← 上一课
2D 刚体与物理
下一课 →
2D 物理材质(摩擦与弹性)
↑