技能誌

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

專欄/短評
寄樹人猿 RON的頭像
寄樹人猿 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
Unity教學-從零開始打造你的遊戲世界
$ 100000
Unity教學-從零開始打造你的遊戲世界
0 / 1000
回到文章列表