Afrikaans
Akan
Albanian
Amharic
Arabic
Armenian
Azerbaijani
Basque
Belarusian
Bemba
Bengali
Bihari
Bosnian
Breton
Bulgarian
Cambodian
Catalan
Cebuano
Cherokee
Chichewa
Chinese (Simplified)
Chinese (Traditional)
Corsican
Croatian
Czech
Danish
Dutch
Esperanto
Estonian
Ewe
Faroese
Filipino
Finnish
French
Frisian
Ga
Galician
Georgian
German
Greek
Guarani
Gujarati
Haitian Creole
Hausa
Hawaiian
Hebrew
Hindi
Hmong
Hungarian
Icelandic
Igbo
Indonesian
Interlingua
Irish
Italian
Japanese
Javanese
Kannada
Kazakh
Kinyarwanda
Kirundi
Kongo
Korean
Krio (Sierra Leone)
Kurdish
Kurdish (Soranî)
Kyrgyz
Laothian
Latin
Latvian
Lingala
Lithuanian
Lozi
Luganda
Luo
Luxembourgish
Macedonian
Malagasy
Malay
Malayalam
Maltese
Maori
Marathi
Mauritian Creole
Moldavian
Mongolian
Myanmar (Burmese)
Montenegrin
Nepali
Nigerian Pidgin
Northern Sotho
Norwegian
Norwegian (Nynorsk)
Occitan
Oriya
Oromo
Pashto
Persian
Polish
Portuguese (Brazil)
Portuguese (Portugal)
Punjabi
Quechua
Romanian
Romansh
Runyakitara
Russian
Samoan
Scots Gaelic
Serbian
Serbo-Croatian
Sesotho
Setswana
Seychellois Creole
Shona
Sindhi
Sinhalese
Slovak
Slovenian
Somali
Spanish
Spanish (Latin American)
Sundanese
Swahili
Swedish
Tajik
Tamil
Tatar
Telugu
Thai
Tigrinya
Tonga
Tshiluba
Tumbuka
Turkish
Turkmen
Twi
Uighur
Ukrainian
Urdu
Uzbek
Vietnamese
Welsh
Wolof
Xhosa
Yiddish
Yoruba
Zulu
1
15. The Grid Player - Receber Dano
2
Explicar um negócio aqui, bem importante.
3
Prestem atenção aqui.
4
Porque...
5
Pode dar uma confusão, tá?
6
Primeiramente, a gente vai fazer agora...
7
O tiro do inimigo, causando dano no jogador, tá?
8
Só que a gente vai fazer o processo inverso.
9
O que eu quero dizer com isso?
10
Quando a gente fez...
11
O tiro do jogador...
12
Então, tem jogador aqui, né? O Player Start está aqui.
13
Quando ele atira...
14
Vem o projétil...
15
Tá?
16
E quando bate aqui, tem o Evento Hit.
17
Lembra do Evento Hit? Que a gente fez.
18
O Evento Hit é disparado no...
19
Projétil.
20
Que está aqui. Projetinho.
21
E no inimigo.
22
Tá?
23
Então, como é que a gente fez a lógica...
24
Para o...
25
Para o dano no inimigo? A gente fez...
26
O Evento Hit dentro do inimigo. Então, se você abrir a Blueprint do inimigo...
27
BP_Enemy.
28
A gente vai ter a lógica do dano lá dentro.
29
Ele vai começar a levar dano, quando ele recebe esse tiro.
30
Deixa eu até mostrar para vocês aqui, isso.
31
BP_Enemy.
32
Tem aqui, o Evento Hit. Tá vendo? Event Hit.
33
E aqui, a gente faz o dano.
34
Tá?
35
Então, pela mesma lógica...
36
O que a gente tem que fazer agora?
37
Quando...
38
O inimigo...
39
Atirar no jogador.
40
Tem o projétil, né?
41
A gente vai ter que construir dentro do jogador, um Evento Hit.
42
Né?
43
Onde aconteça o dano.
44
Pela mesma lógica. O Evento Hit dentro do jogador.
45
E o Evento Hit dentro do...
46
BP...
47
Enemy.
48
Tá? Então, aqui deixa eu colocar Hero.
49
Então, para essa lógica...
50
A gente mantém a consistência, né?
51
De... Uma coisa...
52
No inverso, funcionando da mesma maneira.
53
No entanto...
54
Para que a gente faça o seguinte... Para que o projétil saia do inimigo e chegue no jogador...
55
O jogador vai ter que ter uma referência para esse projétil, né?
56
Porque o jogador está andando no mundo.
57
Toda vez que ele...
58
Bater em alguma parede. Bati em uma parede, disparou o Event Hit.
59
Por exemplo.
60
Tá?
61
Ele vai começar a levar dano disso? Não dá, né? Ele tem que levar dano apenas...
62
Quando ele...
63
Levar tiro do projétil.
64
Para que isso aconteça, a gente vai ter que ver...
65
Toda vez que o Event Hit acontecer, a gente vai ter que ver se o...
66
Onde ele bateu é o projétil ou não é.
67
Tá? Para isso, a gente tem que criar uma referência.
68
Do projétil, lá na Blueprint do Hero.
69
Eu acho um empenho...
70
Principalmente porque...
71
Esse projétil vai sendo destruído, né?
72
Assim que ele bate, ele destrói, enfim.
73
Ou, se ele não bate, ele vai embora do mundo.
74
Mas, o que a gente vai fazer é ao contrário. A gente vai...
75
Colocar toda a lógica do Hit...
76
Dentro do projétil, tá?
77
Para que exista apenas quando o projétil bater no jogador.
78
A gente tem uma coisa aí, chamada inconsistência. Isso é importante.
79
Em programação.
80
Você tem que tomar cuidado com a inconsistência.
81
Tá? Não pode...
82
Ficar usando isso...
83
Sempre, porque começa a ficar um código confuso.
84
Porque a gente vai fazer com que a lógica de Hit...
85
Quando o jogador atira no inimigo...
86
A lógica esteja construída dentro do inimigo.
87
Tá?
88
E quando o inimigo atira no jogador, a lógica está construída no projétil.
89
Né?
90
É uma inconsistência. Não é... Não segue o mesmo padrão.
91
É isso que eu quero dizer.
92
Tá?
93
Eu estou fazendo de propósito, isso.
94
Né?
95
Para que a gente possa fazer os dois caminhos.
96
Né? Como eu comentei, o jogo tem um caráter didático.
97
Então, vamos fazer os dois caminhos.
98
Tá? Mas, presta atenção.
99
Como a gente está fazendo uma coisa diferente da outra.
100
Em uma... Em uma lógica...
101
Ela está construída dentro do BP_Enemy.
102
Então, o Damage está aqui dentro.
103
E na outra lógica...
104
No caminho contrário...
105
O Damage vai estar construído...
106
Dentro do projétil, né?
107
Beleza? Então vamos lá, fazer essa lógica aí.
108
Então, vamos começar.
109
Primeira coisa é...
110
Eu vou pegar o meu projétil do inimigo...
111
Não é esse BP_Projetil.
112
É o projétil do inimigo. BP_Enemy.
113
Toda vez que acontecer o Hit...
114
Ele vai disparar alguma coisa. A primeira coisa, eu vou disparar um Print String.
115
Pra gente poder...
116
Ver o que está acontecendo.
117
Eu vou colocar aqui...
118
TiroInimigo.
119
Inimigo.
120
Só pra gente ver que está funcionando, toda vez que esse projétil bater em algum lugar, tá?
121
Só que a gente precisa fazer que isso aconteça apenas quando ele bater no jogador.
122
Não pode acontecer de ele bater no chão e disparar isso, porque pra gente não importa.
123
A gente só quer pegar o dano no jogador.
124
Então, pra gente conseguir entender quando atinge o jogador, essa Blueprint do projétil...
125
Precisa ter uma referência para o jogador.
126
Né?
127
Fazer essa referência, a gente já sabe.
128
A gente vai fazer um Cast.
129
Então...
130
Get Player Character.
131
Fazer um Cast to BP_HeroChar.
132
E esta variável... Promote to Variable.
133
Eu vou chamar de...
134
HeroRefer.
135
Então, agora essa Blueprint do projétil do inimigo...
136
Ela sabe que o jogador existe.
137
HeroRefer.
138
Então, a gente quer disparar essa Print String apenas...
139
Se o...
140
Ele bater no jogador, né?
141
E não em um lugar do mundo, qualquer.
142
Então, nesse Other aqui. É o Other Actor, né?
143
É o Actor que ele está batendo. Event Hit.
144
Other é o Actor.
145
A gente tem que comparar esse Actor que ele bateu...
146
Se ele é igual...
147
Igual ao objeto. Qual objeto?
148
Igual ao Hero.
149
Se ele bater e for igual ao Hero, a gente vai ter uma condição aqui.
150
Verdadeira, né?
151
A gente já sabe. A gente vai usar um Branch.
152
A condição é o Branch.
153
Então, se ele bater no inimigo...
154
Quando ele bater...
155
For o inimigo.
156
Você vai disparar o True para mim.
157
Que é o TiroInimigo. E depois, você destrói o Actor.
158
Se não for o inimigo...
159
Bater em qualquer outro lugar, você também vai destruir o Actor, tá?
160
O Actor sempre tem que destruir, quando ele bater.
161
Mas, você não vai fazer a Print String TiroInimigo.
162
Depois, obviamente, a gente vai trocar essa Print String pela nossa lógica, né?
163
Pela lógica do dano que ele vai causar no personagem.
164
Maravilha! Eu vou Compilar...
165
Salvar e ver se funciona.
166
Play.
167
Então, vamos dar um tiro ali, no cara.
168
TiroInimigo.
169
TiroInimigo, TiroInimigo TiroInimigo.
170
Tá, mas quando eles estão atingindo, sei lá, o chão...
171
Se ele atingir outra coisa, não vai disparar o Evento.
172
Mas, quando bate em mim, TiroInimigo, TiroInimigo, TiroInimigo.
173
Então, agora a lógica é...
174
Criar o dano que ele vai causar em mim.
175
Tá?
176
É uma boa ideia...
177
A gente...
178
Colocar a lógica do dano causado.
179
Dentro do herói.
180
Para que depois a gente queira...
181
Reutilizar essa Blueprint para outras coisas, para outro projeto ou para outros tipos de inimigo.
182
A gente tem sempre a lógica do dano lá, tá?
183
Então, eu vou ver no meu personagem...
184
BP_HeroChar.
185
E vou criar aqui, um Evento...
186
Chamado HeroIsDamaged. O herói foi danificado.
187
Né?
188
Está começando a ficar grande aqui, a Blueprint, mas é normal.
189
Então...
190
Custom Events.
191
Add Custom Event.
192
HeroDamage.
193
HeroDamage.
194
A gente vai disparar toda vez que ele levar um dano. Seja deste inimigo ou seja de qualquer outra coisa.
195
Por isso que é legal a gente ter isso aqui dentro do...
196
Do personagem, tá?
197
Uma coisa que a gente não tem ainda, é a vida dele.
198
A gente não fez ainda, né? Não tem nenhuma variável.
199
Eu vou criar uma variável.
200
Do tipo Float.
201
E vou chamar de Health, que é a vida. Health.
202
E a gente Compila a Blueprint.
203
Coloca o valor padrão como 100.
204
Agora a gente tem vida nele.
205
A gente pode fazer um pouquinho mais interessante, para depois a gente criar algumas lógicas no futuro.
206
Esse cara, eu vou chamar de Current Health, né?
207
Que é a vida atual dele.
208
Então, por padrão é 100.
209
A gente vai fazer uma outra, que é a Total Health.
210
Que é a vida total que ele vai ter.
211
Né?
212
Isso vai ser importante mais para a frente.
213
Pra gente criar algumas outras lógicas, né? Para saber quando ele morreu...
214
Quando, sei lá, se ele começar a restaurar a vida dele... Pegar alguma coisa para restaurar a vida.
215
Não pode passar da vida total, né? Total Health.
216
Tem que ter isso anotado em algum lugar.
217
Então, eu criei Current Health como 100.
218
E Total Health como 100.
219
Compilar.
220
Então, o que acontece quando ele é danificado? Quando ele leva uma porrada, alguma coisa, né?
221
Ele pega o Current Health dele...
222
Get...
223
E ele vai diminuir um valor...
224
Float menos Float.
225
O Float que ele vai diminuir, sei lá...
226
É tipo, 10, né? A gente já vai...
227
Melhorar isso aqui.
228
E ele vai mudar o Current Health dele...
229
Atual, né? Vai ser esse novo valor.
230
Basicamente é isso que vai acontecer quando ele for danificado.
231
A gente tem que ver isso na tela, para ver se está funcionando. Print String...
232
E a gente conecta esse cara aqui...
233
Então, a gente vai começar a exibir na tela, toda vez que esse Evento for chamado.
234
O Current Health dele, tá?
235
Pra gente não se confundir, a gente tem que tirar...
236
Lá do inimigo...
237
O dano que a gente está causando nele e o Print String que ele faz, né?
238
Então, aqui em BP_Enemy...
239
Quando ele leva tiro, ele também está exibindo a vida dele. Está vendo?
240
Eu vou tirar esse cara aqui. Não precisa mais.
241
Pra gente não se confundir. Agora eu estou só exibindo na tela...
242
A vida que o personagem está perdendo, tá?
243
A gente fez esse Evento, mas em nenhum momento a gente está chamando ele.
244
A gente tem que chamar ele toda vez que o projétil...
245
Atacar ele, né?
246
Então a gente vem no projétil do inimigo...
247
Então esse Print String agora vai embora, né? A gente só fez para testar.
248
O que que vai acontecer agora? A gente vai chamar aquele Evento que está lá no personagem...
249
Então, eu pego o Hero...
250
Refer, aqui.
251
E chamo aquele Evento, que se chama...
252
HeroDamage.
253
HeroDamage.
254
Toda vez que eu for dar tiro nele, então, eu vou chamar esse Evento, que está dentro dele mesmo, tá?
255
E, maravilha.
256
Compilar, salvar e dar play.
257
Então, agora, se eu levar tiro... 70, 40... Estou levando um monte de tiro, né?
258
E claro que está passando para negativo.
259
Porque a gente ainda não arrumou isso.
260
Mas, está funcionando.
261
Vamos fazer isso agora, então? Já para arrumar.
262
A gente vai fazer um Branch aqui.
263
Então, toda vez que...
264
A gente der o tiro, a gente vai diminuir o valor.
265
Vou dar um Print String para ver na tela. E vou ver se esse valor...
266
Ele está menor ou igual à zero.
267
Né? Então vamos comparar aqui.
268
Se isso aqui for menor ou igual...
269
À zero...
270
Então, é Verdadeiro. Então, aqui eu vou dizer que o herói morreu.
271
Print String.
272
Herói morreu. HeroDead.
273
E quando isso acontece, o Current Health...
274
Tem que ser, necessariamente, zero.
275
Então, eu vou dar um Set como zero.
276
Tá?
277
Então, mesmo que eu continue levando tiro, depois que...
278
Eu entendi que eu morri...
279
Vai continuar sendo zero.
280
Então, a gente travou no zero ali, tá?
281
Se for Falso, nada acontece.
282
E esse Print String aqui, a gente vai só levar para o lugar certo agora.
283
Vem para depois do Branch.
284
Tá?
285
Print String aqui.
286
Current Health.
287
Então, eu coloco aqui. Só estou colocando agora, pra gente poder ver, né?
288
Depois isso tudo vai para um HUD, bonitinho.
289
Vem para cá.
290
E vem para cá também.
291
Play.
292
40, 0, 0, 0, Hero Dead, Hero Dead. Eu escrevi errado...
293
Ead.
294
Ensino à distância.
295
O Hero está ensinando à distância, né?
296
Beleza.
297
Eu já tenho a condição da morte aqui, que depois a gente vai utilizar mais para a frente.
298
Né?
299
Hero Ead.
300
Uma coisa legal de a gente fazer...
301
É que este dano aqui, que eu coloquei como 10, né? Como fixo, seja uma variável, né?
302
E que este valor venha lá do inimigo. Venha lá do projétil.
303
Porque, por exemplo, eu estou atirando com esse projétil, mas digamos que...
304
O inimigo atira um outro tipo de projétil, mais forte...
305
Aí, o dano que vai me causar é maior.
306
Né?
307
Isso é importante. Você está fazendo um jogo onde tem vários tipos de danos, né?
308
O personagem levou um tiro de outro tipo de arma. O dano que ele...
309
Recebe é maior.
310
Então, este valor aqui...
311
Quanto que ele perde, tem que vir lá do projétil.
312
Tá?
313
Então, aqui no projétil, eu vou criar uma variável...
314
Nova variável.
315
Do tipo Float.
316
E eu vou escrever aqui, o nome...
317
Damage.
318
É o dano que ele vai causar.
319
Eu vou deixar como 10 também, de novo, tá?
320
Mas, agora eu estou dizendo o dano aqui na Blueprint do projétil tá?
321
Onde eu vou conectar esse cara?
322
Get. Não tem onde conectar, né? Aqui no HeroDamage.
323
Não tem como levar essa informação para lá.
324
Então, aqui na Blueprint do herói...
325
Neste Evento, a gente vai colocar um novo Input.
326
Lembra disso? Nas aulas de...
327
Eventos.
328
Novo Input.
329
Aqui eu vou colocar como Damage também.
330
Float.
331
Então, agora tem um valor para sair daqui.
332
Vou Compilar.
333
Aqui no projétil apareceu. Damage. Então, eu vou levar esse valor junto.
334
Toda vez que eu...
335
Chamar esse cara, eu estou levando esse valor para lá.
336
Vai o 10 junto.
337
O 10 vai.
338
Ele sai do projétil e vem para o Hero.
339
O 10 está aqui agora.
340
E eu conecto esse cara aqui.
341
Só deixa eu arrumar melhor.
342
Então, agora quem está dizendo o quanto que eu vou levar de porrada aí...
343
De dano...
344
É o meu...
345
É o meu projétil, beleza?
346
Só pra gente ter mais organizado. Então, se eu mudar de projétil...
347
Eu posso mudar o valor que vem daqui.
348
E ter um outro tipo de situação, né?
349
Isto conclui aí, pra gente, o dano que o personagem leva.
350
Já com o tratamento de morte, né?
351
Ele já morre, né? Tipo, ele... 0, né? Tem que acontecer alguma coisa depois.
352
Mas, na próxima aula, eu quero fazer uma condição para ele restaurar a vida, né?
353
Como a gente não vai ter pick ups... Lembra, nos nossos Blueprint cards, lá? Que a gente decidiu, no Escopo.
354
Não vai ter nada no ambiente, pra gente coletar e restaurar a vida.
355
Então, a gente vai restaurar a vida ao longo do tempo.
356
Se eu ficar parado, eu restauro vida.
357
Vou fazer isso agora, na próxima aula...
358
Uma condição, um Evento pra gente começar a restaurar a vida do personagem.
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.