Параметрами splice
являются начальный индекс (первый элемент), который должен быть удален сверху, и количество элементов.
Так что утверждение
enemies.splice(enemies[this.index], 1);
, похоже, не совсем верно.Возможно, оператор
enemies.splice(this.index, 1);
будет делать то, что вы хотите, если this.index
будет индексом врага в массиве.Но это не будет так, если вы удалите ранее организованного врага из массива.
Я рекомендую сделать enemies.splice(i, 1);
вместо enemies[i].die();
:
for( var b = 0; b < player.bullets.length; b++) {
for(var i = 0; i < enemies.length; i++) {
var bullet = player.bullets[b];
if(collision(bullet.x, enemies[i].x, bullet.y, enemies[i].y, 20, 55, 40, 55)) {
enemies.splice(i, 1);
}
}
}
Обратите внимание: после удаления элемента из списка необходимо обновить атрибут .index
следующих элементов.