天天看點

《Lua遊戲AI開發指南》一2.9 建立智能體Lua腳本

本節書摘來異步社群《lua遊戲ai開發指南》一書中的第2章,第2.9節,作者: 【美】david young(楊) 譯者: 王磊 責編: 陳冀康,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

為了建立一個新的智能體,我們需要建立另一個lua腳本并實作agent_cleanup、 agent_handleevent、 agent_initialize和agent_update函數。

建立一個lua檔案如下:

現在有了一個基礎的智能體腳本,我們可以在沙箱中建立一個智能體執行個體了。修改沙箱的初始化函數,使用sandbox.createagent函數建立ai代理。

要記住,每個ai智能體都在它自己的lua虛拟機(virtual machine,vm)中運作。雖然這個智能體的邏輯是在一個單獨的vm中運作,但是你仍然可以從沙箱的lua腳本中通路并修改它的屬性,因為智能體資料是在c++代碼中管理的。

修改沙箱的初始化函數,使用sandbox.createagent函數建立你的ai智能體。

現在沙箱中已經有了一個可運作的智能體,我們還需要為它建立視覺表象以便能夠觀察它。這一次,我們使用core.createcapsule函數來程式生成一個膠囊網格,然後附加到智能體上。把智能體傳入core.createcapsule函數中就會把生成的ogre網格直接附加到智能體上面,并在它移動時自動更新這個膠囊的位置和旋轉。

與sandbox.createobject對象相比,我們隻需要建立一個視覺表象,因為智能體已經以膠囊的形式在實體世界中進行模拟了。

現在運作沙箱就能看到智能體的視覺表象了,它是一個同樣使用ogre ground2材質的膠囊,如圖2-4所示。

《Lua遊戲AI開發指南》一2.9 建立智能體Lua腳本

我們可以設定智能體的位置來讓它四處移動。由于智能體參與了實體模拟,如果放在空中它就會落向地面;如果被放到地面以下,則會被推到地面上來。

改變智能體的朝向類似于設定位置向量,不同的是需要提供一個前進方向向量。因為沙箱模拟的是類人形的智能體,實體模拟會鎖定它的方向以讓它始終保持直立。當設定智能體的前進方向向量時,沙箱會把y軸看成是向上的軸向。

繼續閱讀