2011-11-14 43 views
1

我需要一個簡單的AI腳本來隨機制作一個殭屍對象。我使用Google和Google搜索,但我所能找到的只是數學功能「Random Walk」中的內容。也許它是相關的?隨機2D Zombie散步

我用我自己的JavaScript 2D引擎,我需要有類似:

function update() { 
    //Move using available physics engine stuff: 
    // this.position, this.rotation, this.velocity, this.torque, this.acceleration 
    // this.torqueAcceleration, this.drag, this.torqueDrag 
} 

謝謝! :)

+0

使用隨機函數來獲得低百分比機會改變方向(反轉值)? - 請進一步解釋你的問題在這裏。 - 例如:if(Math.floor(Math.random()* 11)== 0)// 10%的機會 this.acceleration * = -1;' – Smamatti

+0

如果你想擁有「真正的」隨機,你必須使用'Math.random()'。混合這與距離,以及所有變量。我假設你不是指人工智能? – OptimusCrime

+0

謝謝,我並不是真正的意思是AI(我已經建立了AI),這就是爲什麼我說簡單..只是想不出一個更好的方式來描述它 - 行爲會更好 – jt78

回答

3

我在2年前在C#XNA做過類似的腳本。

邏輯很簡單。讓我們來談談邏輯的僞代碼走一個殭屍:

以下是殭屍可行走空間/平臺:

x = 0 ___________________________ x = 100 
  1. 選擇一個隨機位置產卵殭屍。
  2. 如果位置超過可行走空間的一半,殭屍臉就離開了。否則殭屍臉就對了。

    x = 0 _____________________<_____ x = 100 
    x = 0 _______>___________________ x = 100   
    
  3. 選擇一個隨機距離在5到可行走空間的末端之間移動。

  4. 開始走殭屍的距離採摘。
  5. 等待2秒到15秒之間的時間(15秒,因爲有些殭屍只是在四處眩暈)。
  6. 轉到步驟2

這應該可以幫助你創建你的腳本爲所有的殭屍在地圖各處漫無目的地遊蕩。您可以改變我在僞代碼中編寫的值以適合您的遊戲。

2

我希望你知道這與特定的編碼無關。這純粹是邏輯。 AI(人工智能)邏輯更加具體。

你的殭屍產生,下一步是什麼?你想分配一個行爲。寫下一些不同的行爲。

  • 站在原地
  • 步行

如果殭屍站在原地,什麼都不做。
如果殭屍正在行走,請選擇隨機速度和隨機方向。
每x秒選擇一個新行爲。

我會做什麼:

// pick behavior between 0 and 5 seconds 
var behaviorTimeout = setTimeout(randomBehavior, Math.round(Math.random() * 5000); 

function randomBehavior() { 
    // set random values 
    this.rotation = Math.random() * 360; // assuming its in degrees 
    this.velocity = Math.random() * MAX_ZOMBIE_SPEED; 

    // run this again in something between 0 and 5 seconds 
    behaviorTimeout = setTimeout(randomBehavior, Math.round(Math.random() * 5000); 
} 

顯然,這隻能算作行走。你需要另一個隨機數來決定它是否應該走路或停下來。

這是人們可以想到的最基本的人工智能邏輯。如果你不再談論殭屍,但是理解和創造AI的實際體貼的生物會變得更難。