Unity教學 EP.5|碰撞系統介紹與使用(Collider + Rigidbody)
專欄/短評

寄樹人猿 RON
更新日:2025年4月2日
想讓角色能「碰到牆壁就停下來」或是「被敵人撞到會掉血」?這集來認識Unity裡的碰撞系統,讓你的遊戲不再是「幽靈系統」!
一、什麼是 Collider?
Collider 是碰撞器,讓物件有物理碰撞的能力。常見類型有:
- Box Collider 2D:矩形碰撞
- Circle Collider 2D:圓形碰撞
- Polygon Collider 2D:根據圖形輪廓自動生成
- Edge Collider 2D:用線段定義邊界,常用於地形
二、加入碰撞器
選取物件 → Add Component → 搜尋 Collider。以主角為例,我們加上 Box Collider 2D
。
你可以勾選「Edit Collider」手動調整碰撞範圍,搭配 Sprite 看起來更貼合。
三、什麼是 Rigidbody?
Rigidbody 是「物理運算核心」,讓物件能受到重力、推擠等效果。在2D遊戲中,加入 Rigidbody2D
才能讓Collider真正作用。
常見參數:
- Body Type:Dynamic(受重力)、Kinematic(不受重力但可程式控制)
- Gravity Scale:重力大小
- Mass / Drag:質量與阻力
若角色是玩家控制的角色,建議設定:
- Rigidbody2D(Dynamic)
- Interpolate 設為 Interpolate(更平滑)
- Collision Detection 設為 Continuous(避免穿透)
四、觸發器與實際碰撞
若只想偵測有沒有接觸,而不想產生實體反應(如推開),可以勾選 Collider 的「Is Trigger」。
接著寫程式偵測:
csharp 複製編輯 void OnTriggerEnter2D(Collider2D other) { Debug.Log("碰到了:" + other.name); }
若要偵測實際撞擊(如兩個剛體相撞):
csharp 複製編輯 void OnCollisionEnter2D(Collision2D collision) { Debug.Log("撞到了:" + collision.gameObject.name); }
小提醒:
- 沒有 Rigidbody 的物件不會產生物理互動
- 一個物件建議只用一個 Collider,否則行為會混亂
Unity教學-從零開始打造你的遊戲世界
Unity 一對一/小班制教學|新手入門到進階開發,依需求客製課程內容
IT/程式 > 程式設計
$ 100000

$ 100000

0 / 1000