随机2D僵尸行走

时间:2011-11-14 13:38:17

标签: javascript artificial-intelligence 2d physics

我需要一个简单的AI脚本来让僵尸对象随机“走动”。我用谷歌搜索和谷歌搜索,但我能找到的只是数学函数'随机漫步'的东西。也许它有关系?

我正在使用自己的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
}

谢谢! :)

2 个答案:

答案 0 :(得分: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步
  7. 这应该可以帮助您为所有僵尸创建脚本,漫无目的地在地图上漫游。您可以改变我在伪代码中编写的值以适合您的游戏。

答案 1 :(得分: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逻辑。如果你不再谈论僵尸了,但是理解和创造AI的实际有思想的生物会变得更难。