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,这些是您可以使用计时器的方法。

  1. delayedCall 方法,更短。

delayedCall(delay, callback, args, callbackScope)

所以,你会做这样的事情。

this.time.delayedCall(2000, onEvent, null, this);

  1. 添加事件方法

addEvent(config) Docs for config

this.time.addEvent({ delay: 2000, callback: onEvent, callbackScope: this });

在文档中找到这些方法 here

查找计时器事件示例 here


您可以做的另一件事是,如果您有任何播放 3 秒的补间(如果您正在补间炸弹或为其设置动画 3 秒)。您可以将 onComplete 回调附加到它。因此,在 Tween 完成后 onComplete 回调将被执行。