Юниты, добравшиеся до последней точки пути, должны отнять у игрока одну жизнь и исчезнуть. Добавим вызов processCompletedEnemies в начало update класса Game:
processCompletedEnemies() {
const enemy = this.enemies.units.find(enemy => enemy.isOutOfTheScreen);
if (enemy) {
enemy.remove();
--this.player.lives;
this.checkGameOver();
}
}
update() {
this.processCompletedEnemies();
// ...
}
Реализуем геттер isOutOfTheScreen:
get isOutOfTheScreen() {
if (this.pathIndex === this.path.length) {
let point = this.sprite.getGlobalPosition();
if (point.x < 0 ||point.x > App.app.view.width) {
return true;
}
}
return false;
}
Здесь обязательно проверяем, достиг ли враг последней точки:
this.pathIndex === this.path.length
Если достиг, достаточно проверить положение по одной координате спрайта.
Добавим checkGameOver в Game. Если игрок потерял все жизни, перезапустим игру:
checkGameOver() {
if (this.player.lives <= 0) {
alert("Game Over!");
App.scenes.start("Game");
}
}