文章

了解 觸發器(Triggers) 的概念

在 Unity 中,觸發器(Triggers)是用於檢測和響應物體進入或離開特定區域的一種特殊類型的碰撞體。觸發器不會直接影響物理運動,但可以用來實現各種遊戲功能,例如事件觸發、範圍檢測和交互等。

觸發器的基本概念

  1. 觸發器的工作原理
    • 觸發器是具有 Collider 組件的物體,但其 Is Trigger 屬性被勾選。當其他物體進入或離開觸發器的區域時,不會產生物理碰撞,但會發送觸發事件。
  2. 碰撞體與觸發器
    • 碰撞體(Collider)通常會處理物理碰撞並影響物體的運動。而觸發器(Trigger)則專注於檢測進入和退出事件,而不會對物理計算產生影響。

如何設置觸發器

步驟 1:添加觸發器

  1. 創建物體
    • Hierarchy 視窗中創建一個物體,例如 3D Object > Cube,並將其作為觸發器使用。
  2. 添加 Collider 組件
    • 選擇該物體,然後在 Inspector 視窗中,點擊 Add Component,添加一個 Collider 組件,例如 Box Collider
  3. 設置為觸發器
    • Collider 組件的屬性中,勾選 Is Trigger 選項。這樣,該 Collider 就成為觸發器,將不再處理物理碰撞,只會處理觸發事件。

步驟 2:編寫觸發器腳本

  1. 創建新腳本
    • Assets 資料夾中,右鍵選擇 Create > C# Script,創建一個新的 C# 腳本,命名為 TriggerExample
  2. 編寫腳本代碼
    • 打開 TriggerExample 腳本,添加以下代碼來處理觸發事件:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    using UnityEngine;
    
    public class TriggerExample : MonoBehaviour
    {
        void OnTriggerEnter(Collider other)
        {
            // 當其他物體進入觸發器區域時被調用
            Debug.Log("Entered Trigger: " + other.name);
        }
    
        void OnTriggerExit(Collider other)
        {
            // 當其他物體離開觸發器區域時被調用
            Debug.Log("Exited Trigger: " + other.name);
        }
    }
    
  3. 附加腳本
    • Hierarchy 視窗中,選擇包含觸發器 Collider 的物體,並將 TriggerExample 腳本拖放到該物體上。

3. 使用觸發器

步驟 1:配置其他物體

  1. 創建其他物體
    • 在場景中創建其他物體,例如 3D Object > Sphere,該物體將會進入或離開觸發器。
  2. 添加 Collider
    • 確保這些物體也有 Collider 組件,但不要勾選 Is Trigger。這樣,它們可以與觸發器進行交互。

步驟 2:測試觸發器

  1. 啟動場景
    • 點擊 Play 按鈕,並將其他物體移動到觸發器區域。觀察 Console 視窗中的日誌輸出,確認觸發事件是否被正確觸發。

4. 進階功能

1. 使用觸發器檢測特定物體

  • 你可以在 OnTriggerEnterOnTriggerExit 方法中檢查進入或離開觸發器的物體標籤或名稱,以便執行特定的邏輯。

    1
    2
    3
    4
    5
    6
    7
    
    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            Debug.Log("Player Entered Trigger");
        }
    }
    

2. 與 Rigidbody 結合使用

  • 觸發器通常需要與 Rigidbody 組件一起使用。如果觸發器與其他物體互動時,該物體應該有 Rigidbody 組件,以確保事件能夠被正確觸發。

5. 小結

觸發器在 Unity 中是一個非常有用的工具,可以用來檢測物體進入或離開特定區域,並根據這些事件執行相應的邏輯。通過設置觸發器和編寫相關的 C# 腳本,你可以輕鬆實現事件觸發、範圍檢測和交互等功能,提升遊戲的互動性和遊戲體驗。

本文章以 CC BY 4.0 授權