我正在尝试将简单的点击检查功能应用到我用JavaScript编写的射击游戏中。
这是我放在jsfiddle上的代码: https://jsfiddle.net/Reverseblade/04whL56j/
首先,我将其编程为输出控制台消息“Hit!”当敌人的一次攻击击中英雄时(蓝色矩形)。但是,由于某种原因,它显示相同的控制台消息“命中!”每次碰撞三次,我无法弄清楚原因。
由于我正在进行修改,请原谅其不可读性。这也不是我认为的对手。 (这是我还有待学习的内容)
可能发生错误的行位于以下函数中:
function updateBullets(skill){
for (var i = 0; i < enemy.bullets[skill].length; i++) {
ctx.fillStyle = "skyblue";
if(enemy.bullets[skill][i]["moving"] === true && hitTestWithHero(enemy.bullets[skill], i )) {
enemy.bullets[skill][i]["y"] = 1000;
enemy.bullets[skill][i]["moving"] = false;
console.log("hit!");
}
if (enemy.bullets[skill][i]["moving"] === false) {
// console.log("this bullet is set to false");
continue;
}
ctx.fillRect(enemy.bullets[skill][i]["x"] - enemy.bullets[skill][i]["w"] / 2 , enemy.bullets[skill][i]["y"] - enemy.bullets[skill][i]["h"] / 2, enemy.bullets[skill][i]["w"], enemy.bullets[skill][i]["h"]);
}
updatingEnemyBullets = false;
}
任何建议都将不胜感激。非常感谢你。