我有一个敌人对象数组,我想检查x和y位置是否在彼此的10个像素内,以及它们是否将它们删除。我的方法似乎是删除所有我不知道出了什么问题。
function checkEnemyPos()
{
for (var i =0; i < enemys.length; i ++)
{
for (var j =0,len = enemys.length; j <len; j ++)
{
var xRange = Math.abs(enemys[j].x - enemys[i].x);
var yRange = Math.abs(enemys[j].y - enemys[i].y);
if (xRange < 10 && yRange < 10)
{
enemys.splice(j, 1);
j--;
len--;
}
}
}
};
答案 0 :(得分:1)
你可以调整循环,外部循环从零到长度-1,内部循环从i + 1
调整到数组的长度。
的示例
[0, 1, 2, 3, 4, 5, 6]
0 1 2 3 4 5 i 1 x x = check 2 x x 3 x x x 4 x x x x 5 x x x x x 6 x x x x x x j
function checkEnemyPos() {
for (var i = 0; i < enemys.length - 1; i++) {
for (var j = i + 1; j < enemys.length; j++) {
var xRange = Math.abs(enemys[j].x - enemys[i].x);
var yRange = Math.abs(enemys[j].y - enemys[i].y);
if (xRange < 10 && yRange < 10) {
enemys.splice(j, 1);
j--;
}
}
}
}