Случайный 2D ходьба зомби - PullRequest
       18

Случайный 2D ходьба зомби

1 голос
/ 14 ноября 2011

Мне нужен простой 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 ]

3 голосов
/ 14 ноября 2011

Я делал подобный скрипт в C # XNA 2 года назад.

Логика проста. Давайте поговорим о логике хождения одного зомби в псевдокоде:

Следующее место для прогулок / платформы для зомби:

x = 0 ___________________________ x = 100
  1. Выберите случайную позицию, чтобы вызвать зомби.
  2. Если позиция больше половины пройденного пространства, зомби останутся влево. В противном случае зомби лицом вправо.

    x = 0 _____________________<_____ x = 100
    x = 0 _______>___________________ x = 100        
    
  3. Выберите произвольное расстояние для перемещения от 5 до конца пройденного пространства.

  4. Начинай ходить по зомби на выбранное расстояние.
  5. Подождите некоторое время от 2 до 15 секунд (15 секунд, потому что некоторые зомби просто любят ошеломлять).
  6. Перейти к операции 2

Это должно помочь вам создать свой сценарий, чтобы все зомби бесцельно бродили по карте. Вы можете варьировать значения, которые я написал в псевдокоде, в соответствии с вашей игрой.

2 голосов
/ 14 ноября 2011

Надеюсь, вы знаете, что это никак не связано с определенным кодированием.Это чисто логика.Логика ИИ (искусственного интеллекта) должна быть более конкретной.

Ваш зомби порождает, что дальше?Вы хотите назначить поведение.Запишите несколько вариантов поведения.

  • Стоите на месте
  • Ходите

Если зомби стоит на месте, ничего не делайте.
Если зомбиходьба, выберите случайную скорость и случайное направление.
Выберите новое поведение каждые 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);
}

Это, очевидно, имеет значение только для ходьбы.Вам нужно другое случайное число, решающее, должно ли оно идти или останавливаться.

Это самая основная логика ИИ, о которой кто-либо может подумать.Если вы больше не говорите о зомби, но реальные вдумчивые существа, понимающие и создающие ИИ, станут намного сложнее.

...