Phaser:如何使用从 0 到 3 的简单计时器
Phaser: How to use a simple timer from 0 to 3
我正在使用以下代码 (这是一个简化的片段,以使其更具可读性):
var player;
var box_tnt;
function create (){
this.physics.add.collider(player, box_tnt, hitTnt, null, this);
}
//the function hitTnt stop the game because the player died
function hitTnt (player, boxes){
this.physics.pause();
player.setTint(0xff0000);
player.anims.play('default');
gameOver = true;
textGameOver.setText('GAME OVER');
}
- 实际表现:
当玩家击中炸弹时:玩家死亡;游戏结束
- 期望的行为:
当玩家击中炸弹时:炸弹等待3秒然后爆炸!如果玩家离得太近,他就会死。
但是即使在论坛上阅读了很多示例之后,我还是很难使用计时器。我是Phaser的新手,所以到目前为止我没有成功。
如有任何帮助,我们将不胜感激,在此先感谢您!
如果您想将 hitTnt()
逻辑的执行延迟 3 秒,您可以将其包装在 setTimeout()
调用中,如下所示:
function hitTnt(player, boxes) {
setTimeout(() => {
this.physics.pause();
player.setTint(0xff0000);
player.anims.play('default');
gameOver = true;
textGameOver.setText('GAME OVER');
}, 3000);
}
假设您使用的是 Phaser 3,这些是您可以使用计时器的方法。
- delayedCall 方法,更短。
delayedCall(delay, callback, args, callbackScope)
所以,你会做这样的事情。
this.time.delayedCall(2000, onEvent, null, this);
- 添加事件方法
addEvent(config)
Docs for config
this.time.addEvent({ delay: 2000, callback: onEvent, callbackScope: this });
在文档中找到这些方法 here。
查找计时器事件示例 here。
您可以做的另一件事是,如果您有任何播放 3 秒的补间(如果您正在补间炸弹或为其设置动画 3 秒)。您可以将 onComplete
回调附加到它。因此,在 Tween 完成后 onComplete
回调将被执行。
我正在使用以下代码 (这是一个简化的片段,以使其更具可读性):
var player;
var box_tnt;
function create (){
this.physics.add.collider(player, box_tnt, hitTnt, null, this);
}
//the function hitTnt stop the game because the player died
function hitTnt (player, boxes){
this.physics.pause();
player.setTint(0xff0000);
player.anims.play('default');
gameOver = true;
textGameOver.setText('GAME OVER');
}
- 实际表现:
当玩家击中炸弹时:玩家死亡;游戏结束
- 期望的行为:
当玩家击中炸弹时:炸弹等待3秒然后爆炸!如果玩家离得太近,他就会死。 但是即使在论坛上阅读了很多示例之后,我还是很难使用计时器。我是Phaser的新手,所以到目前为止我没有成功。
如有任何帮助,我们将不胜感激,在此先感谢您!
如果您想将 hitTnt()
逻辑的执行延迟 3 秒,您可以将其包装在 setTimeout()
调用中,如下所示:
function hitTnt(player, boxes) {
setTimeout(() => {
this.physics.pause();
player.setTint(0xff0000);
player.anims.play('default');
gameOver = true;
textGameOver.setText('GAME OVER');
}, 3000);
}
假设您使用的是 Phaser 3,这些是您可以使用计时器的方法。
- delayedCall 方法,更短。
delayedCall(delay, callback, args, callbackScope)
所以,你会做这样的事情。
this.time.delayedCall(2000, onEvent, null, this);
- 添加事件方法
addEvent(config)
Docs for config
this.time.addEvent({ delay: 2000, callback: onEvent, callbackScope: this });
在文档中找到这些方法 here。
查找计时器事件示例 here。
您可以做的另一件事是,如果您有任何播放 3 秒的补间(如果您正在补间炸弹或为其设置动画 3 秒)。您可以将 onComplete
回调附加到它。因此,在 Tween 完成后 onComplete
回调将被执行。