在 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')
.
我正在像这样向我的游戏中添加精灵:
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')
.