Секундомер Phaser - PullRequest
       67

Секундомер Phaser

1 голос
/ 06 мая 2020

Я запустил игру и хочу, чтобы в ней был секундомер (таймер обратного отсчета). Я нашел код для его активации. Но как это остановить? Источник: https://docs.idew.org/video-game/project-references/phaser-coding/timers#create -счетчик

Ответы [ 3 ]

0 голосов
/ 07 мая 2020

@ Alessandro Candeloro, кода слишком много (850 строк), поэтому я дам вам только те, у которых есть секундомер.

//global vars 
var timeText; var min, sec;

function create timeText = game.add.text(600, 20, "", { fontSize: '20px', fill: '#FFF' }); timeText.fixedToCamera = true;

function displayTimeElapsed(){ 
    if (knight.x >= 96){ 
        var time = Math.floor(game.time.totalElapsedSeconds() ); 
        min = Math.floor(time / 60); 
        sec = time % 60; 
        if (min < 10) { 
            min = "0" + min; 
        }   

        if (sec < 10) {
            sec = "0" + sec; 
        } 
        timeText.text = "Time: " + min + ":" + sec; 
   } 
} 
//update displayTimeElapsed();

0 голосов
/ 28 мая 2020

Давайте создадим его с нуля, прежде всего в вашей create() функции, добавим текст для отображения таймера на экране:

// CREATE()
this.timerText = this.add.text(x, y, "").setColor("#000000");

Во-вторых, давайте создадим функцию, ниже update(), для обратного отсчета:

showTimer(){
    // Assuming you want 60 seconds, if not just chenge the 60's for whatever time you want 
    let maxTime = 60;
    let time = Math.floor(this.time.totalElapsedSeconds() );

    let sec = time % 60;

    timeText.setText(sec); // Adding the timer to our text
}

В-третьих, создайте переменную в create() для отслеживания, когда таймер закончится:

// CREATE()
this.timerOver = false; 

// And lets start the timer
this.timer = this.time.delayedCall(60000);

Теперь давайте изменим нашу showTimer() функцию:

showTimer(){
    let maxTime = 60;
    let time = Math.floor(this.time.totalElapsedSeconds() );
    let timeLeft = maxTime - time; // Check how much time is left

    // When the countdown is over
    if(timeLeft <= 0){
        timeLeft = 0;
        this.timerOver = true; // Setting our variable to true
    }

    let sec = time % 60;

    timeText.setText(sec);
}

и, наконец, в нашей функции update() позволяет проверить, истинна ли наша переменная this.timerOver

if (this.timerOver === false){
    this.showTimer(); // Calling our function every frame
}
else {
    // Whatever you want it to do when timer comes to 0
}
0 голосов
/ 06 мая 2020

вы можете добавить boolean pause, что если true он установит время равным оставшемуся времени, и когда false продолжит делать то, что делает.

, это будет легче объяснить если вы покажете свой код. Я обновлю свой ответ соответственно.

...