代码之家  ›  专栏  ›  技术社区  ›  Ced

Phaser:如何使用从0到3的简单计时器

  •  0
  • Ced  · 技术社区  · 5 年前

    我正在使用以下代码 (这是一个简化的代码段,以使其更具可读性)

    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秒,然后爆炸!如果玩家离得太近,他就会死。 但我很难使用计时器,即使在阅读了论坛上的很多例子。我是一个新手关于移相器,所以我没有成功到目前为止。

    2 回复  |  直到 5 年前
        1
  •  3
  •   Krunal-Gadhiya    5 年前

    假设您使用的是Phaser3,下面是使用计时器的方法。

    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 回拨给它。所以在吐温克服这些之后 完成

        2
  •  1
  •   jo_va    5 年前

    如果你想推迟执行 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);
    }