← На главную
Серия руководств

Шаг 11. Обработка врагов

Создание Tower Defense с PIXI • Шаг 11 из 12

Юниты, добравшиеся до последней точки пути, должны отнять у игрока одну жизнь и исчезнуть. Добавим вызов 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");
        }
    }