範例一 開始時允許玩者選擇喜歡的英雄

這裡要講到函數和變數的運用。編輯器裡還有許多內置的函數,與變數不同,函數是固定的不能夠改變,它有一個最大的特點就是所有函數都有返回值,例如:"Last Created Unit"返回最後創建的單位;"Triggering Unit"返回觸發此觸發器的單位等等。現在我就為你介紹函數和變數的使用方法。 很多RPG地圖都可以讓你選擇英雄,並且英雄死亡的時候能夠復活,這是個非常實用的例子,很多地方你都能運用,但要怎麼做呢?

首先打開變數編輯器新建一個變數PlayerUnit,類型設置為單位。可參閱基礎知識:變數

然後在地形編輯器中選擇區域面板,添加三塊區域,默認名字為"區域 000"、"區域 001"、"區域 002"。

在單位面板上選擇"中立被動",然後在"區域 001"和"區域 002"上各放置一個英雄,然後選擇"玩者 1 (紅色)",放置一個幽光。

在觸發事件編輯器裡增加一個新觸發器,就命名為"ChooseHero1",並為加入指令。

觸發事件
 單位 - Unit Enters Region
 如果單位進入區域1就運行觸發器

單擊Region出現以下對話框,選擇"區域 001"。

兩次確定後完成事件的設置,現在新建一個條件。

條件
 Unit-Type Comparison
 判斷觸發的單位類型是否是一個幽光。

點擊步兵出現單位類型對話框,選擇暗夜精靈族,再選擇幽光後確定。

現在就要設置動作了,也就是給玩者一個英雄單位,並將這個單位儲存到變數PlayerUnit中。

動作
 單位 - Kill
 殺死幽光,默認(Triggering unit)表示是觸發此觸發器的單位,也就是幽光。

 單位 - Cearte a Unit
 在"區域 000"當中創建一個英雄給玩者1,如下圖修改,(Unit-type of 聖騎士 0000 <預置>)這是創建給玩者的單位,單擊"選擇一個單位"按鈕,然後在地圖上單擊聖騎士,玩者 1 (紅色)表示此單位給玩者1,(Center of 區域 000 <預置>)創建位置在"區域 000"正中,默認的建築朝向單位面向哪個方向。

 Set Variable
 選擇變數為PlayerUnit,然後將默認函數(Triggering unit)改為(Last created unit)(Triggering unit)表示觸發此觸發器的單位,也就是已經被殺死的幽光,(Last created unit)表示最後創建的英雄,這樣條指令就將最後創建的英雄賦值給了變數PlayerUnit。

 特效 - Create Special Effect On Unit
 創建一個傳送的特效給PlayerUnit,這句僅僅是為了好看。:-)

點擊Abilities\Spells\NightElf\Blink\BlinkTarget.mdl就能選擇特效模型了,同時,這裡也用到了變數PlayerUnit。

現在要判斷第二個英雄,這很簡單,只要複製一份觸發器,選擇觸發器"ChooseHero1"點複製,然後點粘貼,就有了一份與"ChooseHero1"相同的觸發器。

然後單擊複製的觸發器,將其改名為"ChooseHero2",並修改其中的指令,只用把事件中"區域 001"修改為"區域 002",然後再把Cearte a Unit指令中"聖騎士"改為"山丘之王"就可以了,很簡單吧。

從上面可以看出,如果你想改變可選擇的英雄時,只用修改Cearte a Unit這一條命令中的英雄就行了。運用了變數以後,不管你選擇的是那個英雄,只用創建特效給變數PlayerUnit就行了,並且在例二英雄復活的時候我也就可以直接調用PlayerUnit這個變數。

由此可看出,為可能多次運用的對象創建變數是個很好的習慣,合理運用將大大減少你的工作量。

如果你想問,我要做一個多人遊戲呢?難到每個人都要設置一次?如果有10個英雄可選,共5個玩者,難道要設置10x5=50個觸發器?事實上這個問題很好解決,在這裡一個函數起到關鍵的作用。

首先要把變數PlayerUnit下的數組打上鉤,使其成為變數數組。

然後修改"單位 - Cearte a Unit",將其中的"玩者 1 (紅色)"改為功能"轉化 - Convert Player Index To Player",然後點擊1,把功能改為"遊戲 - Number Of Players" (如下圖),確定。

同樣修改"Set Variable",變數這時候變成了"PlayerUnit [序號]"的形式,把"序號"也改為"遊戲 - Number Of Players"就行了。

"遊戲 - Number Of Players"表示是觸發此觸發器的玩者的序號,所以"Player [遊戲 - Number Of Players]"就是觸發此觸發器的玩者,這就使觸發器能夠自動判斷是哪個玩者選擇了這個英雄。在調用變數時只用選擇數組的序號就行了,比如要調用玩者2的英雄,那麼就只用調用對應的變數PlayerUnit[2]就行了。

如果你不想玩者選擇相同的英雄呢?只要增加一句:

 Trigger - Turn off
 關閉觸發器。

This trigger返回當前觸發器,這條指令表示關閉當前觸發器,觸發器將不會再被觸發。這句可以放在動作中任何位置,動作不會因此中止,所以建議放在第一條運行,避免因為沒有及時關閉而導致其他玩者再次觸發此觸發器。

你可以多放幾個幽光在地圖上測試。

 

回到第四天 觸發器的使用 | 回到七日教學首頁 前進下一範例 - 英雄復活 >
綜合教學/七日教學/4.觸發器使用/例一選擇英雄.txt · 上一次變更: 2007年11月09日 1:14 pm 來自 wasabi
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0