Phaser 3 为玩家创造 Class

Phaser 3 Creating Class for player

我正在使用 javascript 在 Phaser 3 中工作,并注意到我将所有代码集中在一个 class(scene1) 中,它已经扩展了 Phaser.Scene

我想知道如何为我的播放器创建一个 class 并在我的场景 1 class 中使用它来创建它的一个实例,这将有助于像这样清理我的代码:

this.player1 = this.add.sprite(100, 100, "playerImg", 0)
this.player1 = this.add.sprite(playerObj.x, playerObj.y, playerObj.image, 0)

选项 1:

您可以创建您的播放器 Class 扩展 .Sprite class,从您喜欢的任何物理类型,如下所示:

不要忘记在构造函数中传递场景!!!

//player.js

class Player extends Phaser.Physics.Arcade.Sprite {
    constructor(scene, x, y) {
        super(scene, x, y, 'Texture', 'Frame'); // The frame is optional 

    }
}

当您在实际场景文件上调用它时,将 this 作为参数传递,以将播放器添加到该实际场景中。

//scene.js
...
player = this.physics.add.existing(new Player(this, 100, 100));

查看文档 https://photonstorm.github.io/phaser3-docs/Phaser.Physics.Arcade.Sprite.html

选项 2:

另一种方法是扩展到 GameObjects.Sprite,像这样:

//Player.js

class Player extends Phaser.GameObjects.Sprite{

    constructor(scene, x, y){

        super(scene, x, y, 'Texture', 'Frame'); // The frame is optional 

        this.scene.add.existing(this);
    }
}


调用传递场景,x和y作为参数

//Scene.js
...
player = this.scene.add.existing(new Player(this, 100, 100));

看看文档https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Sprite.html