地圖製作範例
[地圖製作教學] 觸發器模組設計


在這個編輯器系列教程三部曲中,在製作與「自由之翼」戰役的第一關類似的小型冒險地圖的同時,你將熟悉和學到如何運用《星海爭霸II》地圖編輯器裡的諸多功能。如果你尚未完成第一章教學,你可以前往[這裡]。如果你想要跳過地形教學,直接進入此教學,你可以從[這裡]取得我們在該教學中所製作的地圖。

目標
透過創建觸發器來處理勝利、戰敗和編程遊戲事件來學習如何使用觸發器模組。

下載觸發器模組 - 完整地圖檔案
下載觸發器模組 - 已完成地形的地圖檔案
下載觸發器模組 - 初始地圖檔案

成果
以下為本教學最終想要得到的成果:



我們將進行一場小型冒險任務,跟著我們的英雄一起調查是誰破壞和吃掉阿格利亞行星殖民地的農作物。

介紹
觸發器模組是專門用來處理遊戲內容和劇情起伏的重要工具。換句話說,它可以用來製作遊戲動畫、在遊戲中生成單位,以及創建和追蹤目標等等。簡單來說,觸發器可以被視為一組指令。當你想在遊戲中使某件事情發生,你可以使用觸發器來控制該事件在遊戲裡的發生時間及發生方式。觸發器包含以下幾個部分:
事件 - 這是造成觸發器執行的要素。如果我們想要設定一個觸發器,以在英雄死亡時結束遊戲的話,該觸發器的事件將會是「當單位死亡時」。
條件 - 條件是用來確保只有當特定狀況為真時才執行觸發器。就上述範例來說,當觸發器因單位死亡而觸發時,我們將新增一個條件以確保 死亡的單位為英雄單位。
動作 - 動作是觸發器被觸發時會被執行的指令。在我們的範例中,當英雄死亡時會被執行的動作是 「為玩家1結束遊戲」。

在我們開始前:
我們將繼續沿用第一章教學所製作的地圖。在該教學中,我們僅完成峽谷和軍事哨站的製作。為了本教學,我們將以第一章教學所學到的概念來完整剩下的地圖創作。如果你不想花時間來點綴剩下的地圖,可以把我們預先做好的地圖拿來作為此次教學的開端;可從這裡取得地圖。在以下的圖像中,你可以看到我們增加了幾個英雄會前往視察的關鍵區域:


我們在地圖東南方的道路旁新增了一個小型的殖民地。這些是一群農作物慘遭破壞的可憐傢伙。

 

我們另外新增了一個受到破壞的農地,其農作物中央還暗藏一隻(遁地的)雷獸。擊殺這個單位就是這個地圖的主要目標。


我們還在殖民地北方和農作物東方之間新增了一個小型附加區域,並安排了幾隻蟲族單位守在該處。

 

最後,我們在地圖各處安排了幾群小型蟲族單位,讓玩家可與其互動。

I.設定檢視選項

如果還沒打開觸發器視窗的話,按下編輯器工具列上的「觸發器模組」按鈕,或按[F6]即可開啟視窗。


在我們深入探討觸發器之前,我們先快速地看一下幾個設定「觸發器模組」視窗的方法。我們將特別說明兩個功能選項,不過我們鼓勵你多加嘗試、體驗各種其他不同的功能選項。

A. 顯示子檢視
「觸發器視窗」的左方區塊為含括地圖所有觸發器的清單。在預設情況下,地圖會事先創建一個「對戰初始化」觸發器。如果你想修改觸發器裡的任何事件、條件或動作,必須雙擊該項目來開啟一個與其對應的視窗才能進行編輯。但是,如果我們啟用子視窗的話,只要單擊選取該項目後,該內容就會顯示在觸發器內容下方的附加區塊裡。


B. 隱藏程式庫
「觸發器程式庫」涵蓋了《星海爭霸 II》的所有事件、條件和動作。使用者可創建自己的「觸發器程式庫」。不過對於這個地圖來說,我們並不需要創建任何程式庫,因此我們將把它們給隱藏起來。按下工具列中的「顯示程式庫」按鈕,即可顯示或隱藏「觸發器程式庫」;該按鈕就在「使用子檢視」按鈕旁邊。

C. 更多功能選項
你可以在視窗上方的「檢視」選單裡找到更多功能選項。我們目前先不做詳細介紹,如果你感興趣的話可自行體驗一番。

II. 我的第一個觸發器 – 勝利與戰敗觸發器
讓我們一起來製作觸發器吧!我們將先製作兩個簡單的觸發器:勝利觸發器和戰敗觸發器,這些觸發器會分別在玩家殺死雷獸、地下蠕蟲、以及玩家單位死亡時執行。在我們開始前,我們應先刪除「對戰初始化」觸發器。這個「對戰初始化」觸發器包含了準備《星海爭霸II》對戰地圖的動作;我們的地圖並不需要這些動作,因為自訂地圖並不需要採集晶礦或建造建築等等。你可以選取該觸發器並按下[Delete]鍵來將其刪除,或右鍵點擊該觸發器後選擇「清除」選項。

A. 戰敗觸發器
當我們的英雄死掉時,將觸發戰敗觸發器來為玩家1結束遊戲。
創建一個新觸發器:
1. 右鍵點擊觸發器列表後,選取(新增>新增觸發器),或按[Ctrl+T]來創建新的觸發器。
2. 將新「觸發器」命名為「戰敗」。
3. 選取「觸發器」以顯示其內容。


創建一個新事件
1. 右鍵點擊「事件」標籤後,選擇(新增>新增事件),或左鍵點擊「事件」標籤後按[Ctrl+E],即可將新「事件」加入這個觸發器中。

 

2. 從彈出的視窗中選擇「單位死亡」,然後點擊「確定」。

創建一個新條件:
1. 右鍵點擊觸發器內容清單後,選擇(新增>新增條件),或按[Ctrl+K]。
2. 這會彈出一個包含條件類型列表的視窗。從列表中選取「比較條件」類型後,按下「確定」。我們選擇「比較」的原因是,我們想要比較死亡的單位是否為英雄單位。如果比較結果符合的話,則「條件」為真,便會執行觸發器的動作。


3. 選取你剛所創建的條件後,你可以在子檢視區塊中看到其內容,其應包括「數值1」、「運算子」和「數值2」等欄位。


4. 雙擊「數值1」的欄位將顯示可供選擇的條件列表,接著選擇「觸發單位」。「觸發單位」指的就是造成「觸發器」執行的特定單位。在本範例中,觸發單位就是死亡單位。

 

5. 「運算子」欄位可以用來設定「條件」的兩個數值之間的關聯性。在本範例中,只有兩個選項,即:等於(==),或不 等於(!=)。這是因為我們所要比較的兩個單位要嘛相同,要嘛不同。沒有所謂的「有些相同」這種數值。我們把運算子設為「==」,因為我們希望當死亡單位為英雄單位時,執行觸發器


6. 雙擊「數值2」來再度開啟「條件」列表。這次我們不從列表中選擇「條件」。反而是從列表上方的選項按鈕中,選擇你想要的「條件」數值類型。現在,我們可以看到條件的「函數」列表。選擇「值」選項按鈕即可開啟現存於地圖中的單位列表。當我們為玩家1製作地圖地形和放置單位的時後,我們部署了兩名陸戰隊和一名雷諾(突擊隊)單位。在列表中搜尋並選取吉姆‧雷諾後按下「確定」。


創建一個動作:
1. 右鍵點擊「觸發器」內容列表後,選取(新增>新增動作),或按[Ctrl+R]。
2. 從彈出來的動作列表中,搜尋並選取「為玩家終止遊戲」。在「尋找」欄位中,輸入部分或完整的觸發器名稱,可協助你縮小搜尋範圍。


3. 選取「動作」後會顯示其內容,這與我們製作「條件」時差不多。

4. 雙擊「類型」欄位後,將數值從「勝利」改為「戰敗」。

測試時間!


我們完成了第一個觸發器了!讓我們切換到遊戲,測試看看新觸發器。

1. 按下編輯器工具列最右方的「測試文件」,或按[Ctrl+F9]。


2. 進入地圖後,選取你的單位並命令他們攻擊吉姆‧雷諾。當他死亡時,你會看到如下圖般的「遊戲結束」選單彈出:


B. 勝利觸發器
接下來,我們要來製作簡單的勝利觸發器。如果放置在地圖上的地下蠕蟲和雷獸都死亡的話,這個觸發器將為玩家1以勝場終止遊戲。如果尚未在地圖上放置地下蠕蟲和(遁地的)雷獸,你應先完成此步驟。如果想要了解關於如何將單位放置到地圖上的相關資訊,請參考第一章教學裡有關地形模組的單位說明 連結。我們將兩個單位放置在地圖的農地區域。


在製作觸發器前,必須先為我們要在任務中殺死的兩個單位分別創建一個變數。
變數!
在《星海爭霸 II 》編輯器裡「變數」的運作方式與編程和編碼語言的一樣。 為不是很清楚該概念的人簡單說明一下,一個「變數」就是一個識別器,可用來設定數值。舉例來說,如果 a 是我們的「變數」的話,我們可以說 a = 5。如果將 a 用於公式,就好比將數字5套入於公式,所以得到 a + 2 = 7。你隨時都可以修改「變數」的值。也就是說我們可以在完成 a + 2 這個公式後,用 a = 6 取代 a = 5,這樣下次在公式中使用 a 的時候,用的數字就是6 而不是數字5了。在《星海爭霸II》編輯器中,會有許多不同類型的「變數」,例如單位、整數和文字。 在「觸發器模組」創建「變數」:

1. 右鍵點擊「觸發器」列表後,選擇(新增>新增變數),或按[Ctrl+B]
。將新參數命名為地下蠕蟲。
2. 當你選取該「變數」時,可以在右方區塊看見其內容。每個變數都有一個類型。該類型與該「變數」可儲存的數值類型相對應,其可儲存整數、實數、文字和單位等等。我們把此「變數」的類型設為「單位」,因為我們希望該「變數」儲存我們要放置在地圖上的特定地下蠕蟲單位。


3. 雙擊右方區塊內的「初始值」欄位。
4. 點選「值」選項按鈕後,搜尋並選取地下蠕蟲(地道)單位。


5. 重複以上步驟來創建雷獸的「變數」。
現在我們已經準備好製作勝利觸發器。讓我們來創建觸發器吧!


事件:
上一個觸發器的事件是每當有單位死亡時便執行觸發器。這次我們要使用一個叫「週期性事件」的事件來使觸發器按間隔重複執行。
1. 右鍵點擊「觸發器」區,然後選擇(新增>新增事件),或按[Ctrl+E]。
2. 接著在彈出的視窗中,選取「函數」區裡的「週期性事件」。
3. 將「持續時間」的數值從5.0修改為1.0。
4. 將「時間類型」的數值設為「遊戲時間」。

條件:
關於這個觸發器,我們會需要用到兩個「條件」:為要檢查的單位各設一個條件。
1. 右鍵點擊「觸發器」區後,選擇(新增>新增條件),或按[Ctrl+K]。
2. 將「條件」類型選為「比較」後,按下「確定」。
3. 選擇新條件以在「子檢視」區檢視其內容。
4. 將「數值1」變更為「單位為存活」。
5. 將「單位」數值改為我們所創建的「地下蠕蟲」變數。
6. 雙擊「數值2」以開啟「數值2」的選項視窗,同時務必確定「TRUE」勾選框為未勾選,接著按下「確定」。我們要將「數值2」設為「false」,因為這樣觸發器便會在單位死亡時執行。


7. 重複步驟1到6來為雷獸進行同樣的設定。複製你的第一個觸發器,然後修改「單位」變數可以讓你節省一些時間,畢竟第二個觸發器的其餘設定都與第一個相同。


當觸發器有兩個條件時,只有在兩個條件都為true時才會執行觸發器動作。如果想在其中一個條件為true時就執行觸發器的話,你可以加入「Or」條件,然後在「Or」條件裡創建條件。如此一來,如果「Or」 條件裡的條件為true時,整體就會被視為 true,進而執行觸發器。 在我們的範例中,要地下蠕蟲和雷獸都死亡才能在任務中獲勝,因此我們不會用到「Or」 條件。

動作:
創建一個與上一個觸發器類似的「為玩家終止遊戲」動作,但確保這次是以「勝利」收場,而非「戰敗」。


C. 資料夾
將觸發器整理的井然有序是很重要的,所以在繼續下個部分之前,我們將先在觸發器列表中創建一個資料夾,並將勝利觸發器、戰敗觸發器和變數通通放到那個資料夾裡。
1. 右鍵點擊觸發器列表後,選擇(新增>
新增資料夾),或左鍵點擊觸發器列表將該區設為焦點後按[Ctrl+G]。 2. 將你的「觸發器」和「變數」拖放到該資料夾,操作方式與你處理電腦中的任何檔案或資料夾差不多。
整個教學過程中,我們會創建幾個資料夾,並按照它們的功用來進行分組:勝利和戰敗觸發器、遊戲觸發器、目標觸發器等等。