‫Ei, bem-vindo de volta.
‫Neste vídeo, vamos criar um cronômetro de contagem regressiva para que o jogador saiba quanto
‫tempo terá que esperar antes de começar a mover seu tanque e explodir coisas.
‫Então, vamos mostrar o tempo restante no cronômetro de contagem regressiva até o jogo começar.
‫Então vamos entrar no editor e começar a fazer isso.
‫Agora estou aqui em nosso Widget Blueprint, BP Start Game Widget, e este é o editor de widgets como
‫vimos.
‫Mas você deve ter notado no canto superior direito, há duas guias aqui, uma que diz designer.
‫É nisso que estamos agora e um que diz gráfico.
‫E se você clicar no gráfico, ele se parecerá mais com um gráfico de eventos de blueprint com nós de eventos e uma
‫guia my blueprint aqui com várias seções.
‫E é aqui que podemos fazer a lógica do projeto.
‫Agora temos três nós aqui.
‫Temos a pré-construção do evento.
‫Isso é semelhante a um construtor em C++ e, em seguida, temos uma construção de evento semelhante ao início do jogo.
‫Então é aqui que é mais apropriado fazer as coisas no início do jogo porque todas
‫as classes relevantes são construídas neste ponto e então temos o evento tick.
‫E assim como a função tick em C++, temos acesso ao tempo Delta aqui.
‫Agora não vamos usar os dois primeiros nós, então vou destacá-los e excluí-los e vamos
‫usar a tecnologia de eventos.
‫Agora, nosso objetivo para este vídeo é mostrar quanto tempo resta e temos um cronômetro de contagem regressiva
‫de três segundos agora em C++.
‫Criamos um identificador de timer e usamos o gerenciador de timer mundial para iniciar um timer.
‫Tudo o que fazemos aqui em plantas é independente disso.
‫Estamos criando um sistema de lógica completamente diferente aqui, e ele vai coincidir com aquele cronômetro que
‫configuramos em C++.
‫Portanto, tudo isso é diferente e independente do lado C++.
‫Agora aqui no WB start game widget, podemos adicionar variáveis assim como podemos adicionar variáveis em C++ aqui.
‫No meu blueprint, posso clicar em adicionar e selecionar variável e agora tenho uma variável chamada new var
‫underscore zero.
‫E aqui embaixo no painel de detalhes, que fica confuso no lado esquerdo, agora temos o nome da variável
‫e o tipo de variável.
‫Agora está destacado por padrão porque é esperado que você renomeie suas variáveis assim que
‫as criar.
‫Portanto, não precisamos desse nome padrão.
‫Vamos chamar isso de nosso próprio nome.
‫Vou chamá-lo de contagem regressiva.
‫E a contagem regressiva será uma variável flutuante Y porque isso manterá o controle de quanto tempo
‫nos resta.
‫Vou iniciá-lo em 3 segundos e cada quadro eu vou subtrair a quantidade de tempo que
‫passou desde o quadro anterior.
‫Então temos uma contagem regressiva indo de três para baixo.
‫Agora vou clicar em Compilar.
‫Agora, assim que clico em compilar, posso dar a isso um valor padrão rolando para baixo nos detalhes.
‫Panel, é definido como zero por padrão.
‫Vou configurá-lo para três por padrão, pois temos uma contagem regressiva de três segundos.
‫Tempo agora como está, este é apenas um float chamado Countdown com um valor de três.
‫Na verdade, não mudamos, mas a cada quadro do jogo, gostaria de subtrair o tempo Delta, que é
‫a quantidade de tempo que passou desde o quadro anterior.
‫E dessa forma, o Countdown estará constantemente atualizando o decremento pelo tempo Delta para que tenhamos uma contagem do tempo
‫de execução.
‫Agora, aqui está como podemos fazer isso.
‫Vou fazer uma contagem regressiva da nossa guia My Blueprint, clicar e arrastar aqui para o gráfico de eventos
‫e liberar.
‫Agora, assim que eu liberar, tenho duas opções.
‫Obtenha a contagem regressiva e defina a contagem regressiva.
‫Se eu clicar em Get Countdown, agora eu tenho a nota de contagem regressiva e se eu clicar e arrastar para fora
‫de sua saída, isso me dá acesso ao valor de Countdown.
‫Agora também posso clicar em Countdown, arrastar e clicar em Set Countdown e temos um nó definido.
‫Já vimos esses dois antes.
‫Nos vídeos anteriores, o pino de entrada para o setter nos permite inserir um valor flutuante e a contagem regressiva
‫será definida para esse valor.
‫Então, como subtraímos o tempo Delta da contagem regressiva e, em seguida, definimos isso para o valor da contagem regressiva?
‫Bem, podemos pegar nosso nó de contagem regressiva aqui e eu posso clicar e arrastar para fora dele e digitar o símbolo
‫de menos no meu teclado e escolher o nó Subtrair.
‫Se eu selecionar isso, agora tenho um ponto flutuante menos um ponto flutuante ou um nó de subtração.
‫Você verá que diz Target is Kismet Math Library.
‫Isso informa que a Kismet Math Library sustenta esse nó.
‫Todos os nós têm código C++ em seu núcleo.
‫Então, o que esse nó faz é receber duas entradas.
‫É preciso uma entrada float.
‫E é preciso uma segunda entrada float.
‫Agora, não vai mudar nenhuma das variáveis que estamos passando.
‫Ele simplesmente fará um cálculo e retornará aquele valor que é o resultado da subtração.
‫Agora eu gostaria de fazer a contagem regressiva e subtrair o tempo Delta dele para que eu possa pegar o pino de
‫saída chamado no tempo Delta do nó de marcação do evento e conectá-lo diretamente à segunda entrada no meu nó de
‫subtração.
‫Então, o que estou fazendo é fazer a contagem regressiva menos o tempo delta e isso obtém o resultado.
‫Agora, inicialmente, a contagem regressiva é de 3 segundos e o tempo delta é um valor muito pequeno.
‫É a quantidade de tempo em segundos que se passou desde o último quadro.
‫Então, isso seria uma pequena quantidade.
‫Então, o que resultará na primeira vez que isso for executado é três menos uma pequena quantidade.
‫E o que eu gostaria de fazer é definir o valor da contagem regressiva igual a esse resultado, a cada quadro.
‫Assim, cada contagem regressiva de quadros está sendo subtraída aos poucos.
‫E assim manterá a contagem regressiva de 3 segundos para baixo.
‫Então, vou pegar o resultado de retorno desse nó de subtração e plugá-lo na entrada do nó
‫de contagem regressiva definido.
‫Agora, isso não vai fazer nada se eu não conectar o fio de execução do evento, marque o pino de
‫execução no pino de entrada para definir a contagem regressiva.
‫Então agora o que isso está fazendo é cada quadro subtraindo o tempo Delta da contagem regressiva, pegando
‫esse resultado e definindo a contagem regressiva para esse novo valor.
‫Agora podemos ver como isso se comporta com um nó de string de impressão.
‫Então, vou arrastar a string de impressão do tipo setter e obter um nó de string de impressão.
‫E então eu gostaria de imprimir o valor da contagem regressiva para que eu possa pegar o valor de retorno do
‫setter, que nos dará o novo valor da contagem regressiva a cada quadro e o conectará ao nó da string.
‫E observe que eu vejo um float converter para string e se eu liberar agora eu recebo um nó de conversão
‫que pegará meu float, converterá em uma string, e agora podemos imprimir isso na tela.
‫Agora vamos ver o que acontece se eu apertar play.
‫Dê uma olhada.
‫Vemos essa contagem como sendo documentada a cada quadro e estamos enviando spam na tela com o valor da contagem regressiva e
‫está ficando cada vez mais negativo.
‫Portanto, este é o primeiro passo para fazer com que nosso cronômetro de contagem regressiva funcione.
‫Vou fechar isso agora.
‫Vimos que estamos imprimindo um valor float que tem vários pontos decimais.
‫E uma vez que imprimimos o valor na tela, não queremos realmente pontos decimais, gostaríamos de um inteiro.
‫Então, eu gostaria de ver a quantidade de segundos restantes sem esses dígitos à direita do ponto
‫decimal.
‫Então, o que eu preciso é de um número inteiro.
‫Bom, o que posso fazer é deletar esse nó de conversão e pegar
‫o resultado do setter de contagem regressiva e vou digitar C E vou selar, que é a abreviação de selar.
‫A operação de vedação vai pegar um valor float e arredondar para o inteiro mais próximo.
‫Então, se estamos em três, bem, não há necessidade de arredondar.
‫Ele vai retornar um inteiro com um valor três.
‫Mas se estivermos em 2. 9, por exemplo, então o nó de vedação vai arredondar para três.
‫E à medida que esse valor diminui, continuará retornando três até chegarmos a dois.
‫Então sempre vamos obter um número inteiro.
‫Agora eu posso conectar isso na string de impressão e você verá que ele diz Convert integer to string.
‫Então agora o nó de vedação está pegando um float, arredondando-o para o inteiro mais próximo e retornando esse valor
‫inteiro.
‫Então agora se eu apertar play, veremos que temos 3 a 1 e zero.
‫E é claro que continua caindo porque nunca dizemos que isso realmente pare.
‫Mas este é um ótimo começo porque agora temos acesso ao número de segundos restantes
‫e podemos imprimir algo na tela em resposta.
‫Então, como vamos imprimir a mensagem correta na tela?
‫O que eu gostaria de fazer é quando temos 3 segundos restantes, eu gostaria que o widget dissesse, Prepare-se.
‫Quando tivermos 2 segundos restantes, gostaria que mostrasse o número dois.
‫Quando tivermos um segundo, gostaria de mostrar o número um.
‫E quando tivermos 0 segundos restantes, gostaria que o texto dissesse Vá.
‫Bem, podemos fazer isso com um nó de comutação nós de comutação podem alternar em vários tipos diferentes, incluindo
‫INT.
‫Agora, a maneira como um switch no nó int funciona é que tem vários casos para vários valores.
‫E com base no valor que passamos para este nó de comutação, ele fará uma de várias coisas.
‫Por exemplo, se passarmos o valor inteiro três, obteremos o caso três que resultará na
‫execução da coisa três.
‫Portanto, o switch no nó final possui várias linhas de execução e executará apenas uma delas com base.
‫A entrada.
‫Agora podemos usar um switch no nó int e passar um inteiro, por exemplo, o resultado do nosso nó de vedação.
‫Então, vou remover a string de impressão e arrastar o nó de contagem regressiva e digitar
‫switch em INT e selecionar switch em int.
‫Agora observe que ele recebe uma entrada do tipo integer.
‫Vou passar o valor de retorno do nó de vedação e também observar que temos uma opção de adicionar pino.
‫Se clicarmos nele, você verá que obtemos um pino padrão além da saída que diz zero.
‫O que isso diz é que se conectarmos alguma lógica de blueprint do pino de execução zero, essa lógica
‫será executada.
‫Se o valor de entrada passado for zero, e se não estiver bem, o padrão será este pino de
‫execução.
‫Agora podemos clicar em adicionar pino novamente e agora temos zero e um.
‫Então podemos ter duas linhas de execução, uma para zero e outra para um.
‫E então, se a entrada não for zero ou um, o que estiver conectado ao padrão será executado.
‫Vou clicar mais novamente duas vezes.
‫Portanto, temos os casos de zero a três e um caso padrão.
‫Então agora cabe a nós arrastar isso e adicionar alguma lógica de blueprint que gostaríamos de executar com
‫base no valor passado que estamos obtendo deste nó SEAL.
‫E é isso que eu gostaria que você fizesse para o seu desafio.
‫Eu gostaria que você imprimisse mensagens diferentes para cada caso usando um nó de string de impressão para o valor três que você
‫pode imprimir prepare-se usando um nó de string de impressão.
‫Para os dois casos, você pode simplesmente imprimir o valor dois para o caso um, você pode imprimir um e
‫para o caso zero você pode imprimir vá agora para o caso padrão, basta imprimir o início do jogo com nosso nó de string de
‫impressão.
‫Pause o vídeo e adicione um monte de nós de string de impressão no gráfico de eventos agora.
‫OK.
‫Então, eu gostaria de usar um nó de string de impressão e vou começar aqui na parte inferior
‫para o caso padrão e vou digitar string de impressão.
‫E a string que eu gostaria de imprimir é start game.
‫Agora, aqui está um atalho.
‫Se você não sabia com o nó de string de impressão selecionado, posso passar o mouse
‫em outro lugar no gráfico de eventos e pressionar control dx e isso copiará o nó que selecionei.
‫Vou ligar os três casos a este nó de string de impressão e vou digitar prepare-se.
‫Então, quando a entrada para o switch for três, veremos.
‫Prepare-se, impresso na tela.
‫Agora eu vou controlar o DX novamente e ligar isso para os dois casos e para dois eu vou simplesmente imprimir dois
‫agora eu vou copiar o nó string de impressão e por um, eu vou imprimir o valor um.
‫E, finalmente, um último nó de string de impressão aqui será conectado ao caso zero e
‫isso dirá ir.
‫OK.
‫Então vamos em frente e compilar isso e eu vou apertar play e agora eu vejo pronto, dois, um
‫e pronto.
‫E então, é claro, vemos o início do jogo quando o tempo acaba.
‫Então, sabemos que o valor está diminuindo e se tornando cada vez mais negativo, mas esse é o caso padrão para
‫nosso switch e é aí que sabemos que podemos realmente começar o jogo.
‫Portanto, este é o primeiro passo para mostrar nosso cronômetro de contagem regressiva em nosso widget.
‫Não estamos mudando o texto que diz Prepare-se ainda, mas faremos isso em breve.
‫Então, neste vídeo, criamos a lógica de contagem regressiva e adicionamos isso ao nosso esquema de widget.
‫Usamos print string para mostrar nossos valores de contagem regressiva e imprimir uma mensagem diferente.
‫Com base em nossos valores de contagem regressiva.
‫Ainda precisamos definir o texto no widget, e faremos isso no próximo vídeo.
‫Vejo você em breve.