Phaser.io 3: получить размер игры в сцене - PullRequest
0 голосов
/ 02 сентября 2018

Вроде бы простой вопрос, но я просто не могу его решить:

Я использую игровую инфраструктуру Phaser.io 3 HTML5 с классами ES6 и пытаюсь определить фактический «Размер игры» (или размер холста / области просмотра), чтобы я мог центрировать объект на экране:

class Scene1 extends Phaser.Scene {
    constructor(config) {
        super(config);
    }

    preload() {
        this.load.image('ship', 'assets/spaceship3.png');
    }

    create() {

        let ship = this.add.sprite(160,125, 'ship');
        // Here I need to figure out the screen width / height:
        // ---> How do I achieve that?
        ship.setPosition(width / 2, height / 2);
    }
}

Я не смог найти способ ни прочитать, ни рассчитать фактический размер области просмотра / холста. Есть намеки?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Вы можете использовать камеру по умолчанию:

ship.setPosition(this.cameras.main.centerX, this.cameras.main.centerY);

С Документация по API Phaser 3 на Camera:

Камеры по умолчанию создаются такого же размера, что и ваша игра, но их положение и размер могут быть установлены на что угодно.

0 голосов
/ 03 сентября 2018

В сцене в методах preload() и create() ( не в конструкторе) вы можете получить доступ к элементу canvas с помощью this.sys.game.canvas. Таким образом, чтобы получить размер холста, вы можете сделать:

create() {
    let { width, height } = this.sys.game.canvas;
}

Со своей стороны я хотел бы добавить следующий код, чтобы облегчить доступ к холсту:

preload() {
    this.canvas = this.sys.game.canvas;
}
...