Способы ограничения частоты обновления Phaser3? - PullRequest
1 голос
/ 05 января 2020

В моей игре Phaser3 есть глобальная переменная gameTick, которая увеличивается с каждым обновлением. Я использую это для появления врагов в моей игре каждое сотое обновление.

Вот упрощенный пример того, что происходит в моем классе сцены:

update () {
    global.gameTick++;

    if (global.gameTick % 100 === 0) {
        this.spawnAlien();
    }
}

Это работает хорошо, но как как только пользователь играет в игру на мониторе с частотой обновления sh> 60 Гц, время обновления нарушается, и инопланетяне появляются чаще.

Я проверил this.physics.world.fps, и это 60. Я также можно изменить this.physics.world.timescale, но тогда мне придется делать гигантский оператор switch для каждого показателя refre sh.

Либо мне не хватает очевидного решения, либо мой метод global.gameTick не является эффективным способом Выполните sh эту задачу.

Это то, что я пока имею в своей конфигурации

let config = {
    type: Phaser.AUTO,
    backgroundColor: "#000",
    scale: {
        parent: "game",
        mode: Phaser.Scale.FIT,
        width: 1900,
        height: 600,
    },
    physics: {
        default: "arcade",
        arcade: {
            debug: true,
            fps: 60 // doesn't fix update frequency
        },
        fps: { // not sure if this is even doing anything
            max: 60,
            min: 20,
            target: 60,
        }
    },
    pixelArt: true,
};

1 Ответ

0 голосов
/ 06 января 2020

Настройки FPS в конфигурации кажутся ошибочными с v3.21.0.

Все, что мне нужно было сделать, это использовать this.physics.world.setFPS(60); из моего класса сцены. Это идеально ограничивало частоту обновления, и у меня нет проблем.

...