﻿1
00:00:04,130 --> 00:00:05,550
‫Ei, bem-vindo de volta.

2
00:00:05,570 --> 00:00:10,940
‫Neste vídeo, vamos criar um cronômetro de contagem regressiva para que o jogador saiba quanto

3
00:00:10,940 --> 00:00:16,250
‫tempo terá que esperar antes de começar a mover seu tanque e explodir coisas.

4
00:00:16,250 --> 00:00:22,280
‫Então, vamos mostrar o tempo restante no cronômetro de contagem regressiva até o jogo começar.

5
00:00:22,280 --> 00:00:25,580
‫Então vamos entrar no editor e começar a fazer isso.

6
00:00:25,850 --> 00:00:33,620
‫Agora estou aqui em nosso Widget Blueprint, BP Start Game Widget, e este é o editor de widgets como

7
00:00:33,620 --> 00:00:34,160
‫vimos.

8
00:00:34,160 --> 00:00:39,560
‫Mas você deve ter notado no canto superior direito, há duas guias aqui, uma que diz designer.

9
00:00:39,560 --> 00:00:42,890
‫É nisso que estamos agora e um que diz gráfico.

10
00:00:42,890 --> 00:00:50,570
‫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

11
00:00:50,600 --> 00:00:53,180
‫guia my blueprint aqui com várias seções.

12
00:00:53,180 --> 00:00:56,120
‫E é aqui que podemos fazer a lógica do projeto.

13
00:00:56,120 --> 00:00:57,920
‫Agora temos três nós aqui.

14
00:00:57,920 --> 00:01:00,080
‫Temos a pré-construção do evento.

15
00:01:00,080 --> 00:01:07,910
‫Isso é semelhante a um construtor em C++ e, em seguida, temos uma construção de evento semelhante ao início do jogo.

16
00:01:07,910 --> 00:01:13,460
‫Então é aqui que é mais apropriado fazer as coisas no início do jogo porque todas

17
00:01:13,460 --> 00:01:18,500
‫as classes relevantes são construídas neste ponto e então temos o evento tick.

18
00:01:18,500 --> 00:01:24,020
‫E assim como a função tick em C++, temos acesso ao tempo Delta aqui.

19
00:01:24,020 --> 00:01:28,670
‫Agora não vamos usar os dois primeiros nós, então vou destacá-los e excluí-los e vamos

20
00:01:28,670 --> 00:01:30,650
‫usar a tecnologia de eventos.

21
00:01:30,650 --> 00:01:37,670
‫Agora, nosso objetivo para este vídeo é mostrar quanto tempo resta e temos um cronômetro de contagem regressiva

22
00:01:37,670 --> 00:01:40,100
‫de três segundos agora em C++.

23
00:01:40,100 --> 00:01:45,260
‫Criamos um identificador de timer e usamos o gerenciador de timer mundial para iniciar um timer.

24
00:01:45,260 --> 00:01:49,010
‫Tudo o que fazemos aqui em plantas é independente disso.

25
00:01:49,040 --> 00:01:55,790
‫Estamos criando um sistema de lógica completamente diferente aqui, e ele vai coincidir com aquele cronômetro que

26
00:01:55,790 --> 00:01:57,470
‫configuramos em C++.

27
00:01:57,470 --> 00:02:02,090
‫Portanto, tudo isso é diferente e independente do lado C++.

28
00:02:02,120 --> 00:02:10,850
‫Agora aqui no WB start game widget, podemos adicionar variáveis assim como podemos adicionar variáveis em C++ aqui.

29
00:02:10,850 --> 00:02:18,380
‫No meu blueprint, posso clicar em adicionar e selecionar variável e agora tenho uma variável chamada new var

30
00:02:18,410 --> 00:02:19,340
‫underscore zero.

31
00:02:19,340 --> 00:02:25,250
‫E aqui embaixo no painel de detalhes, que fica confuso no lado esquerdo, agora temos o nome da variável

32
00:02:25,250 --> 00:02:26,870
‫e o tipo de variável.

33
00:02:26,870 --> 00:02:32,240
‫Agora está destacado por padrão porque é esperado que você renomeie suas variáveis assim que

34
00:02:32,240 --> 00:02:33,380
‫as criar.

35
00:02:33,380 --> 00:02:35,690
‫Portanto, não precisamos desse nome padrão.

36
00:02:35,690 --> 00:02:37,820
‫Vamos chamar isso de nosso próprio nome.

37
00:02:37,820 --> 00:02:39,290
‫Vou chamá-lo de contagem regressiva.

38
00:02:39,290 --> 00:02:46,160
‫E a contagem regressiva será uma variável flutuante Y porque isso manterá o controle de quanto tempo

39
00:02:46,160 --> 00:02:47,360
‫nos resta.

40
00:02:47,360 --> 00:02:53,450
‫Vou iniciá-lo em 3 segundos e cada quadro eu vou subtrair a quantidade de tempo que

41
00:02:53,450 --> 00:02:55,400
‫passou desde o quadro anterior.

42
00:02:55,400 --> 00:02:59,750
‫Então temos uma contagem regressiva indo de três para baixo.

43
00:02:59,750 --> 00:03:01,880
‫Agora vou clicar em Compilar.

44
00:03:01,910 --> 00:03:07,820
‫Agora, assim que clico em compilar, posso dar a isso um valor padrão rolando para baixo nos detalhes.

45
00:03:07,820 --> 00:03:10,550
‫Panel, é definido como zero por padrão.

46
00:03:10,550 --> 00:03:16,100
‫Vou configurá-lo para três por padrão, pois temos uma contagem regressiva de três segundos.

47
00:03:16,100 --> 00:03:22,040
‫Tempo agora como está, este é apenas um float chamado Countdown com um valor de três.

48
00:03:22,040 --> 00:03:28,490
‫Na verdade, não mudamos, mas a cada quadro do jogo, gostaria de subtrair o tempo Delta, que é

49
00:03:28,490 --> 00:03:32,660
‫a quantidade de tempo que passou desde o quadro anterior.

50
00:03:32,660 --> 00:03:39,980
‫E dessa forma, o Countdown estará constantemente atualizando o decremento pelo tempo Delta para que tenhamos uma contagem do tempo

51
00:03:40,010 --> 00:03:41,120
‫de execução.

52
00:03:41,150 --> 00:03:42,980
‫Agora, aqui está como podemos fazer isso.

53
00:03:42,980 --> 00:03:50,030
‫Vou fazer uma contagem regressiva da nossa guia My Blueprint, clicar e arrastar aqui para o gráfico de eventos

54
00:03:50,030 --> 00:03:50,870
‫e liberar.

55
00:03:50,870 --> 00:03:53,480
‫Agora, assim que eu liberar, tenho duas opções.

56
00:03:53,480 --> 00:03:56,060
‫Obtenha a contagem regressiva e defina a contagem regressiva.

57
00:03:56,060 --> 00:04:02,090
‫Se eu clicar em Get Countdown, agora eu tenho a nota de contagem regressiva e se eu clicar e arrastar para fora

58
00:04:02,120 --> 00:04:05,240
‫de sua saída, isso me dá acesso ao valor de Countdown.

59
00:04:05,240 --> 00:04:12,310
‫Agora também posso clicar em Countdown, arrastar e clicar em Set Countdown e temos um nó definido.

60
00:04:12,320 --> 00:04:13,910
‫Já vimos esses dois antes.

61
00:04:13,910 --> 00:04:21,230
‫Nos vídeos anteriores, o pino de entrada para o setter nos permite inserir um valor flutuante e a contagem regressiva

62
00:04:21,230 --> 00:04:23,210
‫será definida para esse valor.

63
00:04:23,210 --> 00:04:30,260
‫Então, como subtraímos o tempo Delta da contagem regressiva e, em seguida, definimos isso para o valor da contagem regressiva?

64
00:04:30,260 --> 00:04:37,820
‫Bem, podemos pegar nosso nó de contagem regressiva aqui e eu posso clicar e arrastar para fora dele e digitar o símbolo

65
00:04:37,850 --> 00:04:41,600
‫de menos no meu teclado e escolher o nó Subtrair.

66
00:04:41,600 --> 00:04:47,660
‫Se eu selecionar isso, agora tenho um ponto flutuante menos um ponto flutuante ou um nó de subtração.

67
00:04:47,660 --> 00:04:50,960
‫Você verá que diz Target is Kismet Math Library.

68
00:04:50,960 --> 00:04:54,800
‫Isso informa que a Kismet Math Library sustenta esse nó.

69
00:04:54,800 --> 00:04:58,100
‫Todos os nós têm código C++ em seu núcleo.

70
00:04:58,310 --> 00:05:01,460
‫Então, o que esse nó faz é receber duas entradas.

71
00:05:01,490 --> 00:05:03,500
‫É preciso uma entrada float.

72
00:05:03,560 --> 00:05:05,370
‫E é preciso uma segunda entrada float.

73
00:05:05,390 --> 00:05:09,560
‫Agora, não vai mudar nenhuma das variáveis que estamos passando.

74
00:05:09,590 --> 00:05:16,700
‫Ele simplesmente fará um cálculo e retornará aquele valor que é o resultado da subtração.

75
00:05:16,730 --> 00:05:24,140
‫Agora eu gostaria de fazer a contagem regressiva e subtrair o tempo Delta dele para que eu possa pegar o pino de

76
00:05:24,140 --> 00:05:31,340
‫saída chamado no tempo Delta do nó de marcação do evento e conectá-lo diretamente à segunda entrada no meu nó de

77
00:05:31,340 --> 00:05:31,910
‫subtração.

78
00:05:31,970 --> 00:05:38,520
‫Então, o que estou fazendo é fazer a contagem regressiva menos o tempo delta e isso obtém o resultado.

79
00:05:38,540 --> 00:05:43,660
‫Agora, inicialmente, a contagem regressiva é de 3 segundos e o tempo delta é um valor muito pequeno.

80
00:05:43,670 --> 00:05:47,900
‫É a quantidade de tempo em segundos que se passou desde o último quadro.

81
00:05:47,900 --> 00:05:50,000
‫Então, isso seria uma pequena quantidade.

82
00:05:50,000 --> 00:05:56,490
‫Então, o que resultará na primeira vez que isso for executado é três menos uma pequena quantidade.

83
00:05:56,510 --> 00:06:01,880
‫E o que eu gostaria de fazer é definir o valor da contagem regressiva igual a esse resultado, a cada quadro.

84
00:06:01,880 --> 00:06:06,500
‫Assim, cada contagem regressiva de quadros está sendo subtraída aos poucos.

85
00:06:06,500 --> 00:06:10,940
‫E assim manterá a contagem regressiva de 3 segundos para baixo.

86
00:06:10,940 --> 00:06:16,820
‫Então, vou pegar o resultado de retorno desse nó de subtração e plugá-lo na entrada do nó

87
00:06:16,820 --> 00:06:18,490
‫de contagem regressiva definido.

88
00:06:18,500 --> 00:06:25,070
‫Agora, isso não vai fazer nada se eu não conectar o fio de execução do evento, marque o pino de

89
00:06:25,070 --> 00:06:28,400
‫execução no pino de entrada para definir a contagem regressiva.

90
00:06:28,400 --> 00:06:34,070
‫Então agora o que isso está fazendo é cada quadro subtraindo o tempo Delta da contagem regressiva, pegando

91
00:06:34,070 --> 00:06:37,850
‫esse resultado e definindo a contagem regressiva para esse novo valor.

92
00:06:37,880 --> 00:06:41,000
‫Agora podemos ver como isso se comporta com um nó de string de impressão.

93
00:06:41,000 --> 00:06:47,210
‫Então, vou arrastar a string de impressão do tipo setter e obter um nó de string de impressão.

94
00:06:47,210 --> 00:06:53,390
‫E então eu gostaria de imprimir o valor da contagem regressiva para que eu possa pegar o valor de retorno do

95
00:06:53,390 --> 00:06:59,330
‫setter, que nos dará o novo valor da contagem regressiva a cada quadro e o conectará ao nó da string.

96
00:06:59,480 --> 00:07:05,750
‫E observe que eu vejo um float converter para string e se eu liberar agora eu recebo um nó de conversão

97
00:07:05,750 --> 00:07:10,400
‫que pegará meu float, converterá em uma string, e agora podemos imprimir isso na tela.

98
00:07:10,400 --> 00:07:13,010
‫Agora vamos ver o que acontece se eu apertar play.

99
00:07:13,490 --> 00:07:14,450
‫Dê uma olhada.

100
00:07:14,450 --> 00:07:22,250
‫Vemos essa contagem como sendo documentada a cada quadro e estamos enviando spam na tela com o valor da contagem regressiva e

101
00:07:22,250 --> 00:07:24,590
‫está ficando cada vez mais negativo.

102
00:07:24,590 --> 00:07:29,080
‫Portanto, este é o primeiro passo para fazer com que nosso cronômetro de contagem regressiva funcione.

103
00:07:29,090 --> 00:07:30,800
‫Vou fechar isso agora.

104
00:07:30,800 --> 00:07:34,940
‫Vimos que estamos imprimindo um valor float que tem vários pontos decimais.

105
00:07:34,940 --> 00:07:40,400
‫E uma vez que imprimimos o valor na tela, não queremos realmente pontos decimais, gostaríamos de um inteiro.

106
00:07:40,400 --> 00:07:46,100
‫Então, eu gostaria de ver a quantidade de segundos restantes sem esses dígitos à direita do ponto

107
00:07:46,100 --> 00:07:46,640
‫decimal.

108
00:07:46,640 --> 00:07:48,410
‫Então, o que eu preciso é de um número inteiro.

109
00:07:48,410 --> 00:07:53,930
‫Bom, o que posso fazer é deletar esse nó de conversão e pegar

110
00:07:53,930 --> 00:08:01,730
‫o resultado do setter de contagem regressiva e vou digitar C E vou selar, que é a abreviação de selar.

111
00:08:01,760 --> 00:08:08,750
‫A operação de vedação vai pegar um valor float e arredondar para o inteiro mais próximo.

112
00:08:08,750 --> 00:08:12,320
‫Então, se estamos em três, bem, não há necessidade de arredondar.

113
00:08:12,320 --> 00:08:15,680
‫Ele vai retornar um inteiro com um valor três.

114
00:08:15,680 --> 00:08:22,430
‫Mas se estivermos em 2. 9, por exemplo, então o nó de vedação vai arredondar para três.

115
00:08:22,430 --> 00:08:29,480
‫E à medida que esse valor diminui, continuará retornando três até chegarmos a dois.

116
00:08:29,480 --> 00:08:31,970
‫Então sempre vamos obter um número inteiro.

117
00:08:31,970 --> 00:08:37,640
‫Agora eu posso conectar isso na string de impressão e você verá que ele diz Convert integer to string.

118
00:08:37,640 --> 00:08:44,720
‫Então agora o nó de vedação está pegando um float, arredondando-o para o inteiro mais próximo e retornando esse valor

119
00:08:44,720 --> 00:08:45,410
‫inteiro.

120
00:08:45,410 --> 00:08:51,530
‫Então agora se eu apertar play, veremos que temos 3 a 1 e zero.

121
00:08:51,530 --> 00:08:56,660
‫E é claro que continua caindo porque nunca dizemos que isso realmente pare.

122
00:08:56,660 --> 00:09:02,120
‫Mas este é um ótimo começo porque agora temos acesso ao número de segundos restantes

123
00:09:02,120 --> 00:09:05,060
‫e podemos imprimir algo na tela em resposta.

124
00:09:05,330 --> 00:09:09,560
‫Então, como vamos imprimir a mensagem correta na tela?

125
00:09:09,590 --> 00:09:15,050
‫O que eu gostaria de fazer é quando temos 3 segundos restantes, eu gostaria que o widget dissesse, Prepare-se.

126
00:09:15,170 --> 00:09:18,980
‫Quando tivermos 2 segundos restantes, gostaria que mostrasse o número dois.

127
00:09:18,980 --> 00:09:22,130
‫Quando tivermos um segundo, gostaria de mostrar o número um.

128
00:09:22,130 --> 00:09:27,140
‫E quando tivermos 0 segundos restantes, gostaria que o texto dissesse Vá.

129
00:09:27,140 --> 00:09:34,910
‫Bem, podemos fazer isso com um nó de comutação nós de comutação podem alternar em vários tipos diferentes, incluindo

130
00:09:34,910 --> 00:09:35,360
‫INT.

131
00:09:35,390 --> 00:09:41,840
‫Agora, a maneira como um switch no nó int funciona é que tem vários casos para vários valores.

132
00:09:41,840 --> 00:09:47,510
‫E com base no valor que passamos para este nó de comutação, ele fará uma de várias coisas.

133
00:09:47,540 --> 00:09:54,410
‫Por exemplo, se passarmos o valor inteiro três, obteremos o caso três que resultará na

134
00:09:54,410 --> 00:09:56,600
‫execução da coisa três.

135
00:09:56,600 --> 00:10:03,230
‫Portanto, o switch no nó final possui várias linhas de execução e executará apenas uma delas com base.

136
00:10:03,320 --> 00:10:04,250
‫A entrada.

137
00:10:04,280 --> 00:10:12,200
‫Agora podemos usar um switch no nó int e passar um inteiro, por exemplo, o resultado do nosso nó de vedação.

138
00:10:12,320 --> 00:10:18,410
‫Então, vou remover a string de impressão e arrastar o nó de contagem regressiva e digitar

139
00:10:18,410 --> 00:10:21,980
‫switch em INT e selecionar switch em int.

140
00:10:22,010 --> 00:10:25,360
‫Agora observe que ele recebe uma entrada do tipo integer.

141
00:10:25,370 --> 00:10:31,880
‫Vou passar o valor de retorno do nó de vedação e também observar que temos uma opção de adicionar pino.

142
00:10:31,880 --> 00:10:39,470
‫Se clicarmos nele, você verá que obtemos um pino padrão além da saída que diz zero.

143
00:10:39,650 --> 00:10:47,300
‫O que isso diz é que se conectarmos alguma lógica de blueprint do pino de execução zero, essa lógica

144
00:10:47,300 --> 00:10:48,500
‫será executada.

145
00:10:48,530 --> 00:10:55,730
‫Se o valor de entrada passado for zero, e se não estiver bem, o padrão será este pino de

146
00:10:55,730 --> 00:10:56,170
‫execução.

147
00:10:56,180 --> 00:11:00,470
‫Agora podemos clicar em adicionar pino novamente e agora temos zero e um.

148
00:11:00,470 --> 00:11:05,150
‫Então podemos ter duas linhas de execução, uma para zero e outra para um.

149
00:11:05,150 --> 00:11:11,760
‫E então, se a entrada não for zero ou um, o que estiver conectado ao padrão será executado.

150
00:11:11,780 --> 00:11:14,930
‫Vou clicar mais novamente duas vezes.

151
00:11:14,930 --> 00:11:19,370
‫Portanto, temos os casos de zero a três e um caso padrão.

152
00:11:19,370 --> 00:11:26,540
‫Então agora cabe a nós arrastar isso e adicionar alguma lógica de blueprint que gostaríamos de executar com

153
00:11:26,540 --> 00:11:30,680
‫base no valor passado que estamos obtendo deste nó SEAL.

154
00:11:31,220 --> 00:11:34,240
‫E é isso que eu gostaria que você fizesse para o seu desafio.

155
00:11:34,250 --> 00:11:41,240
‫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ê

156
00:11:41,240 --> 00:11:44,720
‫pode imprimir prepare-se usando um nó de string de impressão.

157
00:11:44,750 --> 00:11:50,420
‫Para os dois casos, você pode simplesmente imprimir o valor dois para o caso um, você pode imprimir um e

158
00:11:50,420 --> 00:11:57,470
‫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

159
00:11:57,470 --> 00:11:58,040
‫impressão.

160
00:11:58,040 --> 00:12:03,320
‫Pause o vídeo e adicione um monte de nós de string de impressão no gráfico de eventos agora.

161
00:12:07,230 --> 00:12:07,740
‫OK.

162
00:12:07,740 --> 00:12:13,590
‫Então, eu gostaria de usar um nó de string de impressão e vou começar aqui na parte inferior

163
00:12:13,590 --> 00:12:16,920
‫para o caso padrão e vou digitar string de impressão.

164
00:12:17,820 --> 00:12:21,030
‫E a string que eu gostaria de imprimir é start game.

165
00:12:21,180 --> 00:12:22,440
‫Agora, aqui está um atalho.

166
00:12:22,440 --> 00:12:28,020
‫Se você não sabia com o nó de string de impressão selecionado, posso passar o mouse

167
00:12:28,020 --> 00:12:33,720
‫em outro lugar no gráfico de eventos e pressionar control dx e isso copiará o nó que selecionei.

168
00:12:33,720 --> 00:12:40,050
‫Vou ligar os três casos a este nó de string de impressão e vou digitar prepare-se.

169
00:12:40,200 --> 00:12:43,200
‫Então, quando a entrada para o switch for três, veremos.

170
00:12:43,200 --> 00:12:45,300
‫Prepare-se, impresso na tela.

171
00:12:45,300 --> 00:12:52,260
‫Agora eu vou controlar o DX novamente e ligar isso para os dois casos e para dois eu vou simplesmente imprimir dois

172
00:12:52,260 --> 00:12:58,050
‫agora eu vou copiar o nó string de impressão e por um, eu vou imprimir o valor um.

173
00:12:58,050 --> 00:13:04,470
‫E, finalmente, um último nó de string de impressão aqui será conectado ao caso zero e

174
00:13:04,470 --> 00:13:06,060
‫isso dirá ir.

175
00:13:07,110 --> 00:13:07,590
‫OK.

176
00:13:07,590 --> 00:13:13,980
‫Então vamos em frente e compilar isso e eu vou apertar play e agora eu vejo pronto, dois, um

177
00:13:13,980 --> 00:13:14,940
‫e pronto.

178
00:13:14,940 --> 00:13:18,660
‫E então, é claro, vemos o início do jogo quando o tempo acaba.

179
00:13:18,660 --> 00:13:24,900
‫Então, sabemos que o valor está diminuindo e se tornando cada vez mais negativo, mas esse é o caso padrão para

180
00:13:24,900 --> 00:13:29,220
‫nosso switch e é aí que sabemos que podemos realmente começar o jogo.

181
00:13:29,220 --> 00:13:34,020
‫Portanto, este é o primeiro passo para mostrar nosso cronômetro de contagem regressiva em nosso widget.

182
00:13:34,050 --> 00:13:40,080
‫Não estamos mudando o texto que diz Prepare-se ainda, mas faremos isso em breve.

183
00:13:40,320 --> 00:13:45,210
‫Então, neste vídeo, criamos a lógica de contagem regressiva e adicionamos isso ao nosso esquema de widget.

184
00:13:45,240 --> 00:13:50,160
‫Usamos print string para mostrar nossos valores de contagem regressiva e imprimir uma mensagem diferente.

185
00:13:50,160 --> 00:13:52,110
‫Com base em nossos valores de contagem regressiva.

186
00:13:52,110 --> 00:13:56,640
‫Ainda precisamos definir o texto no widget, e faremos isso no próximo vídeo.

187
00:13:57,000 --> 00:13:57,990
‫Vejo você em breve.

