在 Phaser 3 的函数中添加精灵

Add sprite in function in Phaser 3

我正在像这样向我的游戏中添加精灵:

enemy = this.physics.add.sprite(280, 32, 'enemy');

现在我想从这样的函数中添加它:

spawn(this.enemy);

function spawn(enemy) {
    enemy = this.physics.add.sprite(280, 32, 'enemy');
}

它不起作用,我收到以下错误:

TypeError: this.physics is undefined

我必须写什么来代替 this.physics

您应该改为使用 arrow function,如下所示:

首先,在函数preload()中,添加精灵:

this.load.spritesheet('enemy', 'assets/enemy.png', { frameWidth: 32, frameHeight: 48 });

其次,在函数内create()添加如下代码:

spawn = (enemyName) => {
    enemyPlayer = this.physics.add.sprite(400, 450, enemyName);
}

spawn('enemy');

如您所见,我们将精灵的名称作为函数的参数传递。现在,您可以将此功能重新用于 "spawn" 其他 sprites。例如,spawn('stars').