碰撞器是一種物理元件,在遊戲中擁有多項重要的功能。
遊戲角色移動時,若碰到樹木、房屋,岩壁等障礙物,理論上應該無法繼續前進,才符合現實世界的物理法則。我們只要在物件加上碰撞器元件,玩家控制的 角色就被擋住,而不會發生穿過物件的不合理情形。而物件從空中掉落時,若是沒有加上碰撞器,也會穿過地面而不會停止下來。
需要發射武器的射擊遊戲(例如子彈、飛彈、雪球等),也可透過碰撞器判定是否擊中目標。
此外,您也可以將碰撞器設定為觸發器,當玩家走到某個區域,或是觸碰某個物件時,將會觸發設定的事件。
碰撞器的類型
Box Collider 方塊碰撞器 - 適用於方形的碰撞偵測(例如建築物、桌椅、汽車等)。
Sphere Collider 球形碰撞器 - 適用於球形的碰撞偵測。
Capsule Collider 膠囊碰撞器 - 適用於樹木、圓柱的碰撞偵測。
Mesh Collider 網格碰撞器 - 適用於形狀複雜的物件,例如製作場景中的一道門,可以讓玩家控制的角色可以從中間穿越而過。
當您為物件套用碰撞偵測器時,Unity 會自動依物件調整碰撞偵測器的尺寸,您也可以隨時透過屬性檢視器修改碰撞器的大小。
匯入 Character 資源包
使用 [ Standard Assets > Characters > ThirdPersonCharacter > Prefabs ] 資料夾的 ThirdPersonController 遊戲角色練習碰撞功能。
碰撞偵測
建立一個 C# 腳本並套用到玩家角色,碰撞到物件時輸出訊息到 Console 視窗,如果改為 Destroy ( ) 可以刪除碰撞的物件。
碰撞偵測(特定物件)
實際執行之後,您將會發現當角色碰撞任何物件(甚至包括地板)都會執行,在遊戲中大都是碰撞特定物件時執行動作。
以下腳本透過不同的標籤進行判別,執行不同的動作。若碰撞的物件沒有標籤,或者標籤名稱不符合,不會執行動作。