Hallo ich mache Spiel und für feindliche atack möchte ich setInterval Hexe verwenden würde angreifende Funktion ausführen. Problem ist, wenn der festgelegte Intervall ruft Funktion mehr als einmal ausgeführt wird, nicht wie nach der eingestellten Zeit, aber in einem Ausführungsprozess mehr als einmalSet-Intervall-Funktion ruft mehr als einmal, aber zufällig
Dies ist der spezifische Code, arbeiten, wie es tut sollte
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);
}
dies ist Link auf vollständige Datei - https://github.com/Reenasyoo/Purplust/blob/master/src/entity.js
entity.attack() beginnt bei 230 Linie dann setAttack() beginnt bei 282 Linie
so, wenn die setInterval startet seine Sache, setAttack-Funktion heißt zufällige Zeiten in einer Ausführungszeit
ich hoffe, jemand verstand, was ich versuchte zu sagen! BTW ich benutze rAf für die Animation!
Vielen Dank im Voraus!
Wenn die if-Anweisung mehrere Male ausgeführt wird, wird es mehr setintervals sein. Verwenden Sie console.log(), um innerhalb der if-Anweisung zu debuggen. if ((attalumsFromTargetX> = -42) && (attalumsFromTargetX <= 42)) { console.log ('setInterval'); att = setInterval (setAttack, 2000); } –
Wenn Sie SetInterval in der Javascript-Konsole für mehrere Male sehen, dann haben Sie Ihr Problem identifiziert. Ich würde eine staatliche Maschine für künstliche Intelligenz in Javascript empfehlen. Herumspielen mit setTimeout oder setInterval ist nicht der beste Weg für Spiele –
Ich fand es heraus. Vielen Dank! –