Cela semble être une question simple, mais je ne peux tout simplement pas la résoudre:
J'utilise le cadre de jeu HTML5 Phaser.io 3 avec les classes ES6, et j'essaie de déterminer la "taille du jeu" réelle (ou la taille du canevas/de la fenêtre d'affichage), afin de pouvoir centrer un objet à l'écran:
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);
}
}
Je n'ai pas trouvé de moyen de lire ou de calculer la taille réelle de la fenêtre d'affichage/du canevas. Des indices?
Vous pouvez utiliser la caméra par défaut:
ship.setPosition(this.cameras.main.centerX, this.cameras.main.centerY);
De la documentation de l'API Phaser 3 sur Camera
:
Les caméras, par défaut, sont créées à la même taille que votre jeu, mais leur position et leur taille peuvent être réglées sur n'importe quoi.
Dans une scène, dans les méthodes preload()
et create()
(not dans le constructeur), vous pouvez accéder à l'élément canvas avec this.sys.game.canvas
. Donc, pour obtenir la taille de la toile, vous pouvez faire:
create() {
let { width, height } = this.sys.game.canvas;
}
Pour ma part j'aime ajouter le code suivant pour faciliter l'accès au canevas:
preload() {
this.canvas = this.sys.game.canvas;
}