星期五, 4月 16, 2010

[UDK教學] [第十七章] 讓Bot移動

緊接著出現、攻擊之後,接下來就是要讓Bot移動了。

把Kismet打開,然後照前面的做法做到Bot出現為止。然後在想要移動的終點那裏設定一個新的Note。如果把最初放置的Note用Alt壓著用滑鼠左鍵拖曳的話也是可以複製的。


押著Alt鍵按滑鼠左鍵把Note拖出來,就可以複製了,Kismet裡也有反應出來結果

雖然Alt鍵是個很便利的功能,但是新的物件會留在原本物件的位置,所以要注意不要移動到舊的物件了喔

按下滑鼠右鍵選擇「新建動作」→「AI」→「Move To Actor」。


從Aactor Factory的「Finished」跟Move To Actor 的「In」接在一起。接下來從Target的地方跟Actor Factory的「Spawned」所連接的Object(???)接在一起吧。

至於「Destination」就把新位置的Note當成是Object變量接到上面去吧。

從Spawned的連接器出來,生成代表Bot的物件

指定Move to Actor的主體後,目的地接到Destination上,這樣Bot就會開始行走

如果目的地交換的話就連簡單的往返工作等等的設計都是可能實現的。

移動的目的地,這次我們把Bot一開始生成的位置在加回去

再來就是往回走的處理。這樣子就可以來回走來走去了


雖然本來右手拿著槍是對著你,但因為行走方向的關係反而讓Bot背對你跑走了,所以我們來把Bot的視線對回玩家來吧。按下滑鼠右鍵選擇「新建變量」→「Player」→「Player」,然後把「Move To Actor」的「Look At」連接到玩家變量去吧。


這樣就完成了。

如果要把移動加到之前做好的攻擊Bot 的kismet裡的話,就如同下面圖所示。兩隻Bot互相交換位置移動,然後在移動的目的地進行攻擊。下面就做一些簡單的說明。

追加Move to Actor的Action(動作)

要讓哪個Bot移動指定給Target後,把Note接到目的地

在這裡把攻擊的處理接到Finished這邊的話,就會有邊移動邊攻擊的感覺

把已經存在的Firing At的Kismet物件複製(Ctrl+C)後,在貼上(Ctrl+V)。移動的話就押著Ctrl鍵拖到適當地位置去。由於連載一起的線也會一併複製進來,因此請依照狀況更換連接的線

Move to Actor一樣複製起來

Stop Firing一樣複製起來,把該接的接起來就完成了

把這裡的Bot 所有的Kismet複製起來,找地方接上後就把裡面兩個Note交換

兩隻Bot會在中間撞在一起,看起來很好笑

全部的處理就會像是這個樣子

移動與攻擊,攻擊停止的處理有兩個執行的區塊,但是死亡判定只有一個,所以也把死亡判定也做成兩個會比較好。

順帶一提,可能不少人都會對於kismet物件上面「Instigator」的參數產生好奇心。這個是當有個Object啟動了Action(動作)或Event(事件)的時候,引起這個動作或事件的始作俑者會得到的東西之類的意思。舉例來說,Bot受到傷害的時候,會進行受傷的Kismet的運算,那個接受受傷值的參數就是從Instigator進去的。不過若沒有實際去做過的話大概不太能了解這個功能是有什麼用處吧。

Kismet的運算及描述方式並非UDK的最終目標。UDK還提供了Unreal Script提供更廣泛的程式編輯功能,可以撰寫更為詳細的機制。如果Kismet有沒有辦法處理的運算的時候,就請使用Unreal Script看看吧。

沒有留言:

張貼留言

如果您對於此篇文章有意見、問題、想法、或者是吐槽格主寫的太爛,都可以寫在這個地方告訴格主喔:D:D