Javascript Phaser 3为玩家创建类

Javascript Phaser 3为玩家创建类,javascript,class,phaser-framework,game-development,Javascript,Class,Phaser Framework,Game Development,我使用javascript在Phaser3中工作,注意到我的所有代码都在一个类(scene1)中,这个类已经扩展了Phaser.Scene 我想知道如何为我的播放器创建一个类,并在scene1类中使用它来创建它的实例,这将有助于清理我的代码,如下所示: this.player1 = this.add.sprite(100, 100, "playerImg", 0) this.player1 = this.add.sprite(playerObj.x, playerObj.y,

我使用javascript在Phaser3中工作,注意到我的所有代码都在一个类(scene1)中,这个类已经扩展了Phaser.Scene

我想知道如何为我的播放器创建一个类,并在scene1类中使用它来创建它的实例,这将有助于清理我的代码,如下所示:

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

选项1:

您可以创建扩展.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);
    }
}


别忘了在构造器中传递场景

//player.js
职业玩家扩展Phaser.Physics.Arcade.Sprite{
构造器(场景,x,y){
super(场景、x、y、“纹理”、“帧”);//帧是可选的
}
}
在实际场景文件中调用时,将
作为参数传递,以将播放器添加到该实际场景中

//scene.js
...
player = this.physics.add.existing(new Player(this, 100, 100));
看一看这些文件

选项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));
看看这些文件