Привет, я делаю игру и для вражеского атака. Я хочу использовать setInterval, чтобы выполнить атакующую функцию. Проблема заключается в том, когда заданный интервал времени выполняет он вызывает функцию более одного раза, не так, как после установленного времени, но в один процесс выполнения более чем один разset interval function вызывает не один раз, но случайным образом
это специальный код, который не работает, как должно
var setAttack = function(){
intr ++;
entity.attack(entity.wepon, dt);
var isColliding = collides(entity.wepon, target.entity);
if(isColliding)
{
target.stats.health -= 1;
console.log(target.stats.health);
}
}
if((attalumsFromTargetX >= -42) && (attalumsFromTargetX <= 42))
{
att = setInterval(setAttack, 2000);
}
это ссылка на полный файл - https://github.com/Reenasyoo/Purplust/blob/master/src/entity.js
entity.attack() начинается при 230 линии затем setAttack() начинается с 282 строки
так, когда setInterval начинает свою вещь, функция setAttack называется случайным временем за одно время выполнения
Надеюсь, кто-то понял, что я пытался сказать! btw im используя rAf для анимации!
спасибо заранее!
Когда если оператор выполняется несколько раз будет больше setintervals. используйте console.log() для отладки внутри оператора if. если ((attalumsFromTargetX> = -42) && (attalumsFromTargetX <= 42)) { console.log ('setInterval'); att = setInterval (setAttack, 2000); } –
Когда вы видите setInterval в консоли javascript несколько раз, то вы определили свою проблему. Я бы порекомендовал statemachine для искусственного интеллекта в javascript. Игра с setTimeout или setInterval - не лучший способ пойти на игры –
Я понял. Благодаря! –