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 Inimigo - Perceber Player
2
O que a gente vai fazer agora é o inimigo.
3
É prestar atenção no jogador, né? Ele vai perceber o jogador...
4
De acordo com determinados parâmetros aí.
5
Mas, a primeira coisa que eu vou fazer é a seguinte...
6
É que o inimigo fique olhando para o jogador.
7
Tá?
8
A todo momento ali, ele está...
9
Observando a posição que o jogador está.
10
E depois a gente faz algumas condições para que isso aconteça.
11
Beleza?
12
Então, eu estou aqui no Blueprint do inimigo...
13
Como a gente quer que isso aconteça a todo momento, não tem como fugir do Tick.
14
Né?
15
A gente poderia checar isso, por exemplo, a cada um segundo e tal.
16
Mas aqui para o nosso caso...
17
Isso aqui não vai consumir tanta performance.
18
Então a gente pode fazer no Tick mesmo.
19
Né?
20
Então, antes de a gente fazer isso, eu preciso pegar uma referência para o meu jogador, né?
21
Por enquanto a Blueprint do inimigo não sabe que o jogador existe. O Player existe.
22
Então, vamos fazer isso no BeginPlay.
23
Então, deixa eu jogar mais para cima, isso aqui.
24
A gente faz isso quando o jogo começar, né?
25
E aí, vamos fazer aqui uma sequência, pra gente poder se organizar.
26
Sequence.
27
Então, primeiro a gente... Vai acontecer isso.
28
E em segundo lugar, a gente vai fazer um Get Player Character.
29
Index 0 mesmo.
30
A gente vai fazer um Cast para o nosso personagem.
31
Cast BP_HeroChar.
32
E aí a gente vai fazer um Promote to Variable. Eu sempre gosto de chamar de...
33
O nome da Classe, HeroChar. E Refer.
34
Para eu saber que é uma referência...
35
Para essa Classe, né?
36
Isso aqui vai ser a segunda coisa que vai acontecer.
37
Logo que o jogo começar.
38
Então...
39
Esse bloco aqui, eu vou comentar...
40
Get Hero...
41
Char Refer.
42
Maravilha. Deixa ele aqui.
43
E agora, o nosso inimigo tem uma referência para o nosso personagem, né?
44
Então, o que eu quero fazer aqui? Eu quero que o meu inimigo aponte sempre para o personagem.
45
Então, basicamente a gente vai fazer um Set Actor Rotation.
46
E o Set Actor Rotation vai precisar de um novo valor para a rotação.
47
Lembrando lá da nossa aula de "Controlando o Espaço", eu tenho um nó pronto para isso.
48
Find Look.
49
At Rotation. Ele vai pegar dois...
50
Dois lugares no mundo, né?
51
Duas posições.
52
E vai retornar um valor de rotação.
53
Então, vamos pegar aqui...
54
Em primeiro lugar, o Start, que seria a posição do meu...
55
Inimigo.
56
Então é Get Actor Location.
57
Pego esse cara e ele vai apontar para o Target, né? E o Target...
58
É o nosso...
59
É a localização do nosso Player.
60
Né? Como eu já tenho a referência dele aqui...
61
Então, dou um Get nele.
62
E pego, daí, a localização dele também, que é a mesma coisa. Get Actor Location.
63
Né?
64
Então, agora o Start vai apontar para o Target...
65
E vai liberar para mim uma rotação que vai ser a nova rotação do inimigo. Aqui.
66
Pronto, tudo isso vai acontecer sempre, né? Todos os Frames aí.
67
Isso tem que ser instantâneo.
68
Vamos Compilar e salvar e ver se funciona.
69
Se eu não quebrei nada.
70
Então, estão lá, os meus...
71
Inimigos. Mas, como está sem luz...
72
Né? Está difícil de ver.
73
Deixa eu fazer o seguinte...
74
Eu vou colocar mais uma Directional Light aqui...
75
Apontando para o outro lado.
76
Pronto, agora eu consigo ver as duas faces deles, né?
77
Este lado e este lado, beleza.
78
Então, estão eles ali.
79
Dá para ver que eles estão apontando sempre para mim. Né?
80
Ele está olhando para mim, olhando...
81
Essa sombra está matando bastante também.
82
Mas eles estão sempre olhando para mim. Deixa eu só tirar a sombra.
83
Se vocês não sabem, dá para tirar a sombra.
84
Vamos selecionar esse Directional Light...
85
Cast Shadows. Desliga.
86
Isso aqui também. Cast Shadows, desliga.
87
Acho que vai melhorar um pouquinho.
88
É, melhorou.
89
Então eles estão sempre apontando para mim.
90
Olha para mim, olha para mim.
91
É isso aí.
92
Mas eu não quero que isso aconteça sempre.
93
Então, vamos fazer algumas condições para que isso aconteça.
94
E a partir do momento em que a gente vai começara a implementar essas condições...
95
A gente está começando a fazer inteligência artificial, tá?
96
Não precisa fazer nada...
97
Mirabolante, pra gente dizer que está fazendo inteligência artificial. Isso já é.
98
Uma inteligência artificial.
99
A primeira coisa que eu quero fazer é o seguinte... Eu quero que o...
100
O inimigo só perceba o personagem, quando o personagem estiver perto.
101
Tá?
102
Então eu vou fazer o seguinte... Eu vou criar uma área aqui...
103
De atuação.
104
Desse inimigo.
105
Seja uma área, que quando o personagem entrar...
106
O inimigo vai perceber ele.
107
Tem alguns componentes que fazem isso. Que ajudam a gente a fazer esse tipo de...
108
De interação.
109
Uma Classe perceber outra Classe.
110
Mas eu quero fazer com aquilo que a gente aprendeu durante as aulas, para...
111
Pra gente perceber que dá pra fazer muita coisa já.
112
Com as aulas que a gente já viu, tá?
113
Então, eu vou criar um Componente aqui, que é uma colisão.
114
A gente tem Capsule Colision. Quer ver... A gente tem Capsule Colision...
115
Sphere Colision e tem Box Colision.
116
Vou pegar a cápsula.
117
Tá? E aparece uma cápsula ali.
118
Eu vou só rotacionar ela...
119
Para ficar...
120
Deitada, assim.
121
Basicamente, quando...
122
O personagem entrar nessa área de atuação...
123
A cápsula... Essa cápsula, né?
124
O inimigo vai perceber ele.
125
Então, vamos aumentar aqui o tamanho desse cara. Sei lá, tipo...
126
1.000.
127
E aqui, 1.000 também.
128
Quase que vira uma esfera.
129
Posso colocar, sei lá, 1.200 aqui.
130
Né? A gente pode perceber depois, isso.
131
O tamanho que precisa ser.
132
Tá?
133
Vou colocar um pouquinho menor, só pra gente fazer testes. Depois a gente pode mudar esse valor, tá?
134
Então, 800 e, sei lá... 400.
135
A gente não vai conseguir ver essa cápsula no jogo.
136
Então, deixa eu ligar ela, pra gente poder ver.
137
Aqui em Hidden in Game.
138
Está ligado. A gente desliga esse cara.
139
Isso significa se ele vai estar escondido, né?
140
Oculto no jogo. Eu desliguei.
141
Então, agora ele não vai estar oculto no jogo.
142
Então, a gente consegue ver a cápsula.
143
Né?
144
Consigo ver quando eu for entrar na cápsula.
145
Beleza.
146
Então, cada um dos inimigos, agora, tem uma cápsula.
147
Eu vou deixar ela mais para a frente, assim.
148
Tá? Para que tenha mais área na frente do inimigo do que atrás.
149
Então, agora eu vou fazer o seguinte. Toda vez que o personagem entrar...
150
Na área de atuação dessa cápsula.
151
O inimigo vai perceber ele. Então...
152
A gente vai fazer isso através de uma Boolean.
153
Deixa eu só arrumar esse cara aqui mais para baixo.
154
Fazer isso através de uma Boolean.
155
Pra gente pegar...
156
Esse valor, se ele está dentro da cápsula ou não está.
157
Nova variável.
158
Eu vou chamar de Is...
159
Né? Eu sempre gosto de chamar as Booleans com "Is" no começo.
160
IsHero...
161
OnSight.
162
Ou seja...
163
"O herói está à vista?"
164
Né? IsHeroOnSight. Ou, você pode chamar de...
165
"O herói está perto", "O herói está aqui". Tá?
166
Então, essa variável vai guardar para mim...
167
Um valor de verdadeiro ou falso.
168
Se o personagem está à vista...
169
Ou não está, né?
170
Quando que ele vai estar à vista? Quando ele entrar dentro dessa cápsula.
171
Então eu vou selecionar a cápsula. E aí, botão direito...
172
Eu vou adicionar um Evento para a cápsula.
173
Add Event for Capsule.
174
Eu quero...
175
Colisão.
176
Component Begin Overlap.
177
Tá?
178
A gente já viu algumas coisas disso também. Overlap entre atores.
179
Então, quando um Actor passar em cima deste Actor...
180
O inimigo vai perceber.
181
Beleza?
182
A gente podia fazer aqui... Qual que é o outro Actor?
183
Quando for só o Hero, né?
184
Mas, como a gente só tem ele andando no mundo...
185
Então, a gente não vai ter...
186
O perigo de ter algum... Outro Actor entrando nessa cápsula, tá?
187
Mas a gente poderia fazer aqui, uma condição para ver se esse ator que está entrando é exatamente o herói.
188
Né?
189
Então, quando ele entrar na cápsula...
190
A gente vai dar um Set nesse...
191
IsHeroOnSight.
192
E vai dizer que é Verdadeiro, né?
193
Por padrão, este valor é...
194
Deixa eu só pegar aqui.
195
Por padrão, o valor é Falso.
196
Quando ele entrar na cápsula, o valor é Verdadeiro.
197
Tá?
198
Deixa eu só...
199
Comentar esse cara aqui.
200
Overlap.
201
Set Hero...
202
On Sight.
203
Ou seja...
204
Ele está setando o valor da variável HeroOnSight.
205
HeroOnSight, na verdade, é...
206
Se o jogador, se o herói está...
207
À vista, né? Se o inimigo está vendo o herói.
208
A gente fez isso com o Begin Overlap. Ou seja, se o herói...
209
Chegar dentro dessa cápsula aqui...
210
Então, o inimigo vai entender que ele está perto dele. Que ele está...
211
Que ele está à vista, beleza?
212
Então, agora a gente vai usar essa condição para...
213
Cuidar da nossa rotação aqui.
214
Então, essa rotação só pode acontecer...
215
Quando o HeroOnSight for Verdadeiro.
216
A gente faz isso com um Branch. Bem simples.
217
Então, se o...
218
O herói...
219
Está OnSight. Se isso for Verdadeiro.
220
Você faz um Set Actor Rotation.
221
Se for Falso, não faz nada.
222
Compilar e salvar.
223
E agora eu vou fazer o seguinte... Eu vou deixar o herói um pouquinho mais longe.
224
Ele já está, né?
225
Ele tem que estar fora dessa cápsula, né?
226
Eu vou deixar ele mais longe aqui, pra gente entender o que está acontecendo.
227
Então, eu estou aqui agora. Nenhum deles aponta para mim, né?
228
Só quando eu chegar perto da cápsula... Quando eu tiver um Overlap com ela.
229
Aí, eles agora estão olhando para mim.
230
Né?
231
Basicamente, eles perceberam que eu estou aqui.
232
Tá? E eles ficam me percebendo infinitamente.
233
Até eu cancelar isso. Isso a gente vai fazer mais para a frente.
234
Né?
235
Mas eles estão me percebendo lá.
236
Mesmo que eu vá bem longe, eles estão olhando para mim.
237
Né?
238
Então, só para entender de novo. Play...
239
Se eu ficar passando aqui do lado...
240
Ninguém me percebe.
241
Se eu entrar na cápsula...
242
Esses dois já me perceberam.
243
Mas aquele ainda não.
244
Se eu entrar na cápsula dele... Me percebeu.
245
Então, agora os três...
246
Estão olhando para mim.
247
Tá?
248
Então, essa é uma maneira de a gente fazer uma inteligência artificial.
249
Uma outra coisa que eu quero fazer é o seguinte... Você percebe que...
250
Eles não me percebem. Eu posso ficar atirando, né?
251
E matar eles de longe.
252
E eles não me percebem, eles não reagem.
253
Então, outra coisa que a gente tem que fazer é o seguinte...
254
Eles têm que...
255
Responder, né? Eles têm que perceber que eu estou aqui.
256
Quando eu atiro neles.
257
Né?
258
Se eu atirei, ele tem que me perceber.
259
Então, vamos fazer isso também.
260
Nesse caso, a gente vai fazer uma outra variável para guardar essa informação.
261
Então, um Boolean também. Que é uma informação que vai ser Verdadeira ou Falsa.
262
Eu vou chamar de IsHeroHere.
263
"O herói está aqui"?
264
Então, basicamente, o inimigo percebeu. "O herói está aqui".
265
"Ele está atirando em mim."
266
Então HeroHere, por padrão, é Falso.
267
Tá?
268
Ele vai se tornar Verdadeiro toda vez que eu atirar no inimigo.
269
Então a gente tem aqui, lembra? O nosso código para atirar. Está em Hit, aqui.
270
Deixa eu comentar esse cara aqui.
271
Então, toda vez que o inimigo for atingido, ele tem que perceber que o herói está ali.
272
Então, eu vou fazer aqui, uma condição.
273
Set. Bem simples. Set Verdadeiro.
274
Toda vez que ele for atingido...
275
A gente coloca a variável como IsHeroHere.
276
Verdadeiro.
277
Né? Então, agora...
278
A gente tem duas condições aí...
279
Quando o inimigo é atingido.
280
A gente coloca a variável IsHeroHere como Verdadeiro.
281
E quando o inimigo...
282
E quando o Player passa em cima do Componente lá, da cápsula...
283
A gente coloca a variável IsHeroOnSight Verdadeiro.
284
Então, essas duas variáveis vão cuidar pra gente...
285
As condições de quando o inimigo percebe o Player.
286
Eu só preciso implementar esse cara, agora, lá no meu Tick.
287
Então, eu venho aqui... Né?
288
A gente tem HeroOnSight.
289
A gente pode ter também...
290
IsHeroHere.
291
Então, vem para cá.
292
Então, pode ser um ou outro. Independente, né?
293
Se acontecer esse ou acontecer esse...
294
A gente vai fazer o Actor Rotation, tá?
295
Então, a gente coloca aí, uma condiçãozinha "Or".
296
Né? Um ou outro.
297
Eu puxo aqui.
298
Onde está "Or".
299
Or Boolean.
300
Então, é um ou outro.
301
Se esse acontecer ou se esse acontecer... Tanto faz.
302
Então, a condição é Verdadeira.
303
Tá?
304
Então, agora, se eu atirar...
305
Ele me percebeu. O do meio me percebeu.
306
Ele está olhando para mim.
307
E aí, depois, a gente faz, claro, as condições...
308
De... Do inimigo atirar na gente.
309
Então, ele me percebe se eu atiro.
310
Ainda não ficou muito claro. Vou deixar um pouquinho mais claro. Ninguém está olhando para mim.
311
Vou atirar no do meio.
312
Com essa luz está terrível, né?
313
Mas ele está olhando para mim.
314
E aí, quando eu entro na cápsula, os outros também olham para mim.
315
Que são essas condições que me atendem, tá?
316
Isso já é uma inteligência artificial. Eu vou só arrumar aqui e comentar.
317
Set...
318
Actor Rotation.
319
Ele olha...
320
Para o jogador.
321
Para o jogador.
322
Ok, então ele só olha para o jogador quando uma dessas duas condições for verdadeira.
323
Quando o jogador passa dentro da cápsula. Ou seja, ele está perto do inimigo.
324
Ou quando ele atira no inimigo. Então, mesmo que ele esteja de longe, se ele atirar no inimigo...
325
O inimigo vai perceber ele, né?
326
A gente tem que implementar o tiro ainda, tem que implementar a morte e tal.
327
Mas, uma coisa que eu quero fazer uma pausa agora e arrumar é a parte visual.
328
Vamos fazer uma pausa aí.
329
Vamos começar a arrumar a parte visual, porque está bem chato ver tudo assim, né?
330
Está até difícil de entender o que está acontecendo.
331
Então, eu vou começar a fazer isso agora, nas próximas aulas. A gente faz uma pausa.
332
Na parte de lógica.
333
Arruma um pouco a parte visual e depois volta para a lógica.
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.