Unity人工智慧學習 基本模式控制

2021-07-04 15:25:22 字數 2580 閱讀 3612

前面講的演算法和確定性演算法都很好,不過有時候你需要建立乙個按照順序執行操作的遊戲物件。例如,工作日來到單位你都會執行一系列特定的步驟:

1、打卡 2、開啟電腦  3、點開平常逛的**看看最新訊息 ........

關鍵在於很多步驟是你不會多想的,每次都是習慣性的自然重複。當然,如果有什麼事情不對了,你可能會改變順序,比如今天接到乙個要外出的任務,你可能就直接打完卡就走了。模式是只能行為的重要部分,甚至人類也會用到模式。

扯了那麼多沒用的,進入的正題吧,這次我要講的是基本模式。它是遊戲模式裡面最簡單的,為遊戲物件建立模式可以很簡單,這取決於遊戲物件本身。大部分的類似於《星球大戰》的射擊遊戲,所有攻擊者必須遵循乙個左右移動的模式並在某點用乙個特定的進攻模式來攻擊你。這種模式,或者指令碼控制的ai,可以有很多實現的技術,不過我想最簡單的技術是基於一套經由解釋執行的動作指令,每乙個運動模式都儲存為一系列方向或指令。如下表:為乙個我設計的模式語言指令集

而模式發生的運動(假設的)如圖所示:

另外每乙個方向性的指令後面可能還根由乙個運算元或者資料來限定它,比如執行的時間。我預設了乙個text檔案裡面儲存了這樣的一系列指令

這個text的指令檔案沒一行代表乙個指令序列,第乙個數字時這一行指令序列的索引緊跟其後的是分號用來作為讀取的時候的分割符號。比如第一行,1代表的是序列索引號,後面的1和10是一起的表示執行第乙個指令並執行10秒鐘,最後都是以6結束代表這行指令執行完畢。

讀取並使用這個text的**如下:

using unityengine;

using system.collections;

using system.collections.generic;

using system.io;

using system.text;

public class texttoolcontrol

return _istance;

}private dictionarypatterndict;

// use this for initialization

public void init()

;char sp2 = ;

patterndict = new dictionary();

while (true)

if (line == "" || line == " ")

string data = line.split(sp1, system.stringsplitoptions.removeemptyentries);

if (data == null)

patterndict[int.parse(data[0])] = data[1].split(sp2, system.stringsplitoptions.removeemptyentries);}}

public listgetcontent(int key)

if (!patterndict.containskey(key))

listtemp = new list();

for (int i = 0; i < patterndict[key].length; i++)

return temp;}}

要處理模式指令,你只需要使用乙個switch語句解釋每乙個指令並告訴遊戲角色他需要做什麼,如下:

void basicpattern_ai()

//每個具體操作的操作時間到了就執行下乙個操作

m_timecounter -= time.deltatime;

if(m_timecounter<=0)

break;

case movedirection.north:

break;

case movedirection.south:

break;

case movedirection.west:

break;

case movedirection.stop:

break;

case movedirection.end:

break;

case movedirection.random:

break;

}if (m_currentoperand < m_currentpattern.count-1)}}

另外,所有的的模式都要有乙個要點:合理運動。因為有可能選擇乙個模式,而按照這個模式運動的話它會撞上其他東西。如果模式ai不考慮這一點的話,模式只會被遊戲物件盲從。因此你的模式ai必須要有乙個反饋迴圈來通知ai它執行了某些非法、不可行的或者不合理的操作,而且必須採取相應的應對措施使得它恢復正常。這一次就不配動態圖了,因為動態都好大。

Unity遊戲人工智慧學習筆記

最近在學一些遊戲人工智慧的東西,之前對c 也是一知半解,所以收集實際學習中遇到的一些問題 1.c 中的get set訪問器 詳細解釋為什麼要使用get set訪問器 起了個濾網的作用 還有個寫的比較詳細的 舉例說明,比較易懂 應該注意的問題,說是只能用 來賦值不能用 這個我還不是很懂 幾種作用 個人...

人工智慧學習之路

1人工智慧基礎 高等數學必須會 資料分析 概率倫 gai lv lun 線性代數及矩陣 凸優化 tu you hua 微積分 wei ji feng 古典模型 逼近輪 牛頓法 梯度下降 python 高階應用 容器 容器淺拷貝和深拷貝 高階函式 lambda表示式 約瑟夫環問題 模組和高階包 時間庫...

人工智慧學習筆記

人工智慧並非專家系統,但是卻或多或少的與專家系統有關係,可以說專家系統是人工智慧很早期的存在形式。專家系統 es,expert system 是一種模擬人類專家解決領域問題的電腦程式系統。專家系統具有如下的一些特點 1 知識的匯聚 2 啟發性推理 3 推理和解釋的透明性 4 知識的更新 典型的專家系...