JavaScript - 当玩家死亡时阻止敌人移动

时间:2021-06-03 08:27:52

标签: javascript timeout setinterval clearinterval

下面是我应该发送的代码太多了,如果您愿意,我可以编辑这篇文章并删除不必要的代码以进行复制!

loader.py

嗨,这不是全部的代码,还有更多的上下文,所以有些代码没有意义,但正如你所看到的,我已经定义了两个变量 let FollowInterval; let FollowTimeout; for (let index2 = 0; index2 < Worlds[index].Players.length; index2++) { // For every Player in that room if (Worlds[index].Players[index2].iscolliding(Worlds[index].Enemys[index1])) { // if player is colliding with a enemy to therefore take damage. if (! Worlds[index].Enemys[index1].hasattacked) { // Checking if enemy has already attacked and waiting on attack timeout Worlds[index].Players[index2].health -= Worlds[index].Enemys[index1].damage; if (Worlds[index].Players[index2].health <= 0) { //console.log('Died'); clearInterval(FollowInterval) clearTimeout(FollowTimeout) } io.to(Worlds[index].Players[index2].id).emit("Update Character", {health: Worlds[index].Players[index2].health}); // Update the characters health Worlds[index].Enemys[index1].hasattacked = true; } } if (Worlds[index].Enemys[index1].RectCircleColliding(Worlds[index].Players[index2]) && !Worlds[index].Enemys[index1].followingonce) { Worlds[index].Enemys[index1].followingonce = true; Worlds[index].Enemys[index1].following = Worlds[index].Players[index2].id; FollowInterval = setInterval(() => { Worlds[index].Enemys[index1].GoTowardsPlayer(Worlds[index].Players[index2].x,Worlds[index].Players[index2].y,Worlds[index].Players[index2].id) console.log(Worlds[index].Players[index2].x,Worlds[index].Players[index2].y,Worlds[index].Players[index2].id); }, 100); FollowTimeout = setTimeout(() => { Worlds[index].Enemys[index1].followingonce = false; Worlds[index].Enemys[index1].isfollowing = false; Worlds[index].Enemys[index1].stop(); clearInterval(FollowInterval) }, 5000); } } FollowInterval,在查看是否如果角色与检测圈相撞,我会受到攻击,如果是这样,则启动 FollowTimeoutTimeout 超时在一段时间后停止跟随,并且间隔是跟随字符直到超时完成。

回到角色被损坏的地方我有一个:

Interval

这里我清除一个 if (Worlds[index].Players[index2].health <= 0) { //console.log('Died'); clearInterval(FollowInterval); clearTimeout(FollowTimeout) } 和一个 clearInterval 来清除过去定义的变量。当 This 运行时,Intervals 和 Timeouts 工作得很好,但是当玩家死亡时,它会继续跟随玩家!
如果您需要更多信息,请随时在下面发表评论并尽快回复。

0 个答案:

没有答案