Javascript 在画布中检测多个阵列坐标

Javascript 在画布中检测多个阵列坐标,javascript,arrays,canvas,Javascript,Arrays,Canvas,各位程序员好 今天我有一个问题和我的一个项目有关,我正在用画布制作一个类似塔防的东西。然而,我坚持尝试在一个坐标中检测多个圆。下面是我的例子: for (var a = 0; a < buildArcherX.length; a++) { for (var a = 0; a < buildArcherY.length; a++) { if (Math.sqrt(Math.pow(buildArcherX[a] - this.x, 2) + Math.pow(b

各位程序员好

今天我有一个问题和我的一个项目有关,我正在用画布制作一个类似塔防的东西。然而,我坚持尝试在一个坐标中检测多个圆。下面是我的例子:

for (var a = 0; a < buildArcherX.length; a++) {
    for (var a = 0; a < buildArcherY.length; a++) {
        if (Math.sqrt(Math.pow(buildArcherX[a] - this.x, 2) + Math.pow(buildArcherY[a] - this.y, 2)) <= arch.radius + 7) {
            this.attackedByArcher = true;
        } else {
            this.attackedByArcher = false;
        }
    }
}
for(var a=0;a如果(Math.sqrt(Math.pow(buildArcherX[a]-this.x,2)+Math.pow(buildarchey[a]-this.y,2))您可以使用一个整数来存储范围内防御数量的值,并在范围内发现防御时增加该值

此外,嵌套循环时必须使用两个不同的变量

this.defensesInRange = 0;
for (var x = 0; x < buildArcherX.length; x++) {
    for (var y = 0; y < buildArcherY.length; y++) {
        if (Math.sqrt(Math.pow(buildArcherX[x] - this.x, 2) + Math.pow(buildArcherY[y] - this.y, 2)) <= arch.radius + 7) {
            this.defensesInRange += 1;
        }
    }
}
this.defensesInRange=0;
对于(var x=0;xif(Math.sqrt(Math.pow(buildarchex[x]-this.x,2)+Math.pow(buildarchey[y]-this.y,2))可能会在for循环中放置一个计数器,而不是仅在true/false中?
var计数器=0;for…for…if(…){counter++}
返回(计数器)
如果它在循环下运行会发生什么?那么循环下的数字将增加一百万倍。不确定你的意思。你有第三个循环吗?我有一个循环的setInterval函数。正如我在两个循环之外分配的变量,每次执行这个代码块时都会重置。它起作用了,sorta,因为不知何故“这”直到最右边的防御在射程内才受到任何伤害。