星期二, 6月 08, 2010

[UDK教學][第二十章]使用Trigger

問題來了,引發這些機關啓動的事件到底是甚麼樣的東西呢?雖然進到Kismet的選單裡的「新建選單」一看馬上就找的到,但是也不是說拉下來就可以馬上使用。我們就從比較簡單的拉出來做做看吧。

●Actor
Destroyed
Take Damage

這些是給Actor使用的事件,需要遭受攻擊(Take Damage)、破壞(Destroyed)的時候可以使用。

●AI
Reached Route Actor
See Enemy

想要Bot走到指定地點(Reached Route Actor)以及看到敵人有反應(See Enemy)的時候可以使用。

●GAME
Game Ended
Level Loaded
Level Startup

三個事件(Events)照順序分別是在遊戲在結束時(Game Ended)、在關卡載入完成的時候(Level Loaded)、是遊戲要開始的時候會使用到(Level Startup)。若是在遊戲載入完成的當下,並不會動態新建物件(Object),而且在遊戲開始的時候,再來產生物件的話就太慢了(但是說這是問題嘛其實也還好)。這三個事件產生的時機很相近,就看實際狀況來使用吧。

●Pawn
Death
Get Inventory
Line Of Sight
See Death

偵測Bot及玩家狀態的事件。依照順序為死亡(Death),撿到道具(Get Inventory),跑進視線內(Line Of Sight),別的Bot在視線內死亡(See Death)等等。

●Physics
Constraint Broken
Hit Wall
Projectile Landed
Rigid Body Collision
Touch

判斷遊戲物理引擎所觸發的事件。依照順序,從被限制的行動解放出來(Constraint Broken),撞擊牆壁時(Hit Wall),射出物有著彈碰撞的時候(Projectile Landed),與剛體物件產生碰撞時(Rigid Body Collision),玩家等等有碰觸事件產生的時候(Touch)。用BSP筆刷產生的MESH當成牆壁,RigdBody Actor等等剛體系的物體所產生的物理運動,甚至是玩家相關的物理運動都可以分別被判斷出來。

但是Touch Event雖然可以指定在StaticMesh上,但是我依然無法順利的執行這個Event。

●Player
Player Spawned

玩家出現時使用。


連FPS以外的遊戲也常常使用的Touch Event,雖然就如前面所述,StaticMesh(嚴格說起來是可以在遊戲畫面內放置的物體)並沒有辦法順利把這個Event啓動。在公式論壇上有找到似乎在Property 上找到Collide Complex及No Encroach Check兩個選項,只要調整這兩個選項就可以成功,但是實際上並沒有這麼簡單。從不停出現的Error Messager就可以得知沒辦法將事件指定上去。

由於連最基本預設與玩家的Touch Event也無法適當的進行判定,因此我們先來把這個最基本的做好吧。就從公式網站的Tutorial Video裡也時常出現的Trigger Object著手吧。


在地板上按右鍵打開蹦現視窗,選擇「新建Actor」>「Add Trigger」。


畫面中出現了開關樣子的圖示。按下C鍵後,可以顯示判斷範圍出來。雖然沒什麼修改的必要,但是這個操作還是先牢記下來比較好。

按下F4打開Property,「Display」的「Hideen」參數給取消掉。(不過沒有取消掉也無所謂就是了)。


雖然動作尚未被設定進去,不過此時如果在這裡進遊戲的話Trigger的圖示會被顯示出來。

這個Trigger我們打算作成觸碰了以後會瞬間移動到Note的位置上去。由於我們這次只是單純要測試Trigger的功能,因此在啓動Trigger後要產生甚麼樣的動作其實不是重點,只要有設置並且看到效果就好了。因此我們先使用瞬間移動看看吧。


在前置作業中,我們先打開內容瀏覽器,在Actor 類別裡選擇Note放置在地板上。

請在適當的地方把Note放置上去。

在選擇了Trigger狀態下打開Kismet,把Trigger_0當作起點讓事件在這裡發生。


選擇新動作並且選擇瞬間移動。「新建動作」﹣>「Actor」﹣>「Teleport」。


把作為動作對象的物件連結至Player上

選擇Note之後把選單打開,指定目的地。

完成圖

在這個狀態執行後,玩家觸碰Trigger後角色應該就會被瞬間傳送到Note的那個點。

已經瞬間傳送的樣子。上圖瞬間傳送後所面對的方向


那接下來把Kismet先關閉,仔細看著三視圖,把球體跟Trigger重疊在一起的方式配置。


這裡我們再把Kismet打開。拿出我們之前作第三人稱視點的要領,把Ball跟Trigger接在一起。選擇「新建動作」-「Actor」-「Attach To Actor」把處理連接在一起。

把attach To Actor叫出來。把Ball跟Trigger分別選起來,產生新的變量再加進去。


製作整體運算的事件,把之前的Kismet運算連接在一起。

運算的全體Layout。

此時開始播放遊戲。如果球開始轉的話,Trigger就會跟著一起轉,這樣子的話移動的物體也可以作碰撞判定了。


靜止的物體裡放置Trigger,以及動態物體把Trigger Attach上去的話,我們可以確定就可以設定各種不同的事件上去了。

沒有留言:

張貼留言

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