我有一个敌对对象数组,我想检查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--;
}
}
}
};
最佳答案
您可以调整循环,将外部循环从零调整为长度-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--;
}
}
}
}