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 - Arma: Projétil
2
Agora vamos criar o nosso projétil. Vou vir aqui no meu Content Browser...
3
E vou criar uma nova Blueprint Class.
4
Do tipo Actor, né? Porque esse projétil vai existir no mundo.
5
E vou chamar de BP_Projétil...
6
Tá?
7
Salvar tudo.
8
Salva.
9
Dentro desse Actor, eu vou criar...
10
Então, o meu projétil, tá?
11
É uma Blueprint Class do tipo Actor.
12
Não tem muito segredo.
13
Vamos lá então. Nessa Blueprint do tipo Actor, eu não tenho nada, né?
14
A primeira coisa que eu vou criar é uma Mesh, pra gente poder ver...
15
Esse cara no mundo. Então, Adicionar Componente.
16
Eu vou colocar como Static Mesh.
17
Static Mesh.
18
E vou chamar de...
19
Projétil Mesh, né?
20
Então, qualquer coisa que eu colocar aqui dentro desse Static Mesh...
21
Vai ser a cara, a aparência do meu projétil, tá?
22
Então, essa Mesh aqui vai ser só a aparência, na verdade, do meu projétil.
23
Então, aqui em Static Mesh, eu posso selecionar...
24
O que eu tiver. Na verdade, eu não tenho nada, né?
25
Porque a gente não fez o Starter Content.
26
Mas, como eu disponibilizei para vocês os arquivos do jogo...
27
Naquele Zip, a gente tem várias FBX.
28
Você pode utilizar algum deles para fazer a Mesh do teu projétil.
29
Eu vou abrir lá, só para vocês verem.
30
Na pastinha Bloco, Final, a gente tem uns blocos bem simples.
31
A gente tem um cubo de 1x1.
32
Né?
33
Eu vou puxar esse cara...
34
Para o meu projeto.
35
Para o nosso projétil ser apenas um cubinho. Vai ser um cubinho.
36
Então eu vou puxar esse cara para cá e importar.
37
Importação. Não é Skeletal Mesh. Deixa desligado isso aí.
38
Importar. Basicamente é só um cubinho e tem um material para ele, né?
39
Vou só renomear isso aqui, pra gente não se perder. Eu vou chamar de...
40
Projétil Mesh.
41
Aqui eu vou chamar do material, depois. M_projétil.
42
Aqui em ProjétilMesh, então, agora eu vou selecionar essa Mesh que eu acabei de importar.
43
ProjétilMesh.
44
Ficou bem grande, né?
45
É um cubo gigantesco.
46
Então eu vou redimensionar ele aí.
47
É porque ele é 1x1, né?
48
1m x 1m. Eu vou colocar 0.1 aqui.
49
Para ser um projétil bem pequenininho.
50
Eu posso posicionar ele um pouquinho melhor.
51
Ligando o Grid aqui.
52
Deixar ele bem no meio.
53
Tá?
54
E também mais para baixo.
55
Beleza.
56
Então, quando a gente disparar, criar o projétil...
57
A gente vai ver...
58
Esse cubinho aqui, né?
59
Tá?
60
Então, vamos testar isso aqui já. Para ver se está funcionando.
61
Vou vir aqui na minha arma. BP_Gun.
62
E aqui, agora, a gente vai começar a implementar...
63
O projétil saindo da arma, né?
64
E não só aquele Print String do Fire.
65
Né?
66
Então, aqui em Fire... Eu vou abrir essa Função.
67
Ela tem o Fire disparando.
68
Não quer... Eu vou deixar isso aqui, por enquanto.
69
Mas não é isso que a gente quer, né? A gente não quer ter isso disparando.
70
A gente quer o projétil.
71
Então, basicamente, quando a gente disparar a Função Fire...
72
A gente vai fazer um Spawn Actor From Class...
73
A gente vai criar esse Actor no mundo.
74
E a Classe desse Actor, a gente já sabe que é BP_Projétil.
75
Então é isso que ele vai fazer. Ele vai criar esse Actor no mundo.
76
Vou Compilar e você vai perceber que vai ter um erro.
77
Que a gente não disse para ele onde... Para o Transform, né? Onde criar esse projétil no mundo.
78
Tá? Eu preciso dizer para ele onde.
79
Então, aqui no meu...
80
Então eu venho aqui na minha Viewport...
81
Tá?
82
Só vou renomear esse cara aqui. SkeletalMesh1.
83
Está muito feio, esse nome.
84
Eu vou renomear para...
85
GunMesh.
86
Tá?
87
Então eu vou criar aqui um Arrow. Arrow é um bom...
88
É um bom Componente pra gente criar. Pra gente poder pegar um Transform aí.
89
Tá? A gente poder pegar uma localização no mundo.
90
E uma direção para onde aponta.
91
Então, eu tenho esse Arrow aqui.
92
Eu vou colocar ele exatamente na...
93
Naquele lugar que a gente acha né?
94
Que faz sentido...
95
O projétil aparecer. Que é bem aqui dentro, né?
96
Ele vai sair daqui.
97
Então, esse Arrow vai dar para mim o quê? Vai dar uma posição no mundo...
98
Uma localização.
99
E vai dar uma direção para mim também, né?
100
E uma escala, tá?
101
Então eu criei esse Arrow. Eu vou só renomear ele para...
102
ArrowProjétil.
103
E aqui na Função Fire, eu vou pegar esse carinha.
104
Tá?
105
Vou pegar o Transform dele. Get World Transform.
106
E isso aqui eu vou utilizar como Transform do meu projétil.
107
Né?
108
Basicamente, o que eu estou dizendo para a Unreal é o seguinte...
109
Você vai criar uma Classe do tipo BP_Projétil no mundo...
110
Vai aparecer esse Actor...
111
Ele vai aparecer aonde? Ele vai aparecer exatamente...
112
No Transform desse Arrow aqui, né?
113
Vai aparecer exatamente aqui, nesse ponto.
114
Tá?
115
Compilar agora. Não vai mais dar o erro. Porque já tem o Transform.
116
Eu vou salvar, vou apertar Play. Só pra gente ver o que acontece.
117
Toda vez que eu clico, então, aparece, né? Um...
118
Uma caixinha no mundo, né?
119
E ela cai. Porque a gente tem...
120
Gravidade. E eu tô preso.
121
Porque eu tenho colisão, tá vendo? Eu não consigo passar...
122
Porque eu tenho colisão aqui.
123
Então, essas coisas que a gente tem que começar a arrumar agora.
124
Mas, ele está aparecendo.
125
O tiro, exatamente...
126
Onde está o Arrow. Então está funcionando.
127
Tá?
128
Então, a primeira coisa que a gente tem que fazer é o seguinte...
129
Aqui na minha Blueprint do projétil...
130
Tá?
131
Vou pegar essa Mesh aqui e vou tirar toda a colisão dela.
132
Colision.
133
Eu vou colocar como...
134
No Colision.
135
Tá? Sem colisão.
136
E vou tirar o Overlap Events. Ou seja, isso aqui vai ser só a representação...
137
Do meu projétil, tá? Ele não vai ter interação com o mundo.
138
Por que a gente faz assim? Pra ter um pouquinho mais de controle, tá?
139
Então eu vou adicionar um novo Componente.
140
E vou colocar como Sphere Colision.
141
Vou arrastar esse cara em cima do DefaultSceneRoot. Ou seja, ele vai ser...
142
O novo Root. Make New Root.
143
E aqui em Sphere Radios, no Detalhes, eu vou colocar um pouquinho menos. Talvez, sei lá, 10.
144
Tá?
145
Então, basicamente, o que a gente vai fazer é...
146
Calcular a colisão através desse Sphere Colision.
147
Ou seja, onde nosso projétil vai bater e atingir as coisas.
148
Tá?
149
A gente deixa o cubo só como uma representação visual.
150
Beleza?
151
E aqui em Sphere Colision, então, a gente tem a Colisão desse cara.
152
Né? As várias colisões.
153
Por padrão, ele está OverlapAllDynamic.
154
Tá? Eu vou colocar como Custom.
155
Personalizado.
156
E vou pedir para ele ignorar aqui, na...
157
Ignore. Eu vou pedir para ele ignorar o Pawn.
158
Eu faço isso para que, quando a gente atirar...
159
Não dê nenhum tipo de conflito de...
160
De ficar disparando um aviso que eu estou atirando em mim mesmo.
161
Tá?
162
Lembrando, claro, que se o teu inimigo for do tipo Pawn, ele vai ignorar o inimigo...
163
Não é a ideia.
164
Então, o nosso inimigo, quando a gente for fazer...
165
Ele não pode ser uma Classe do tipo Pawn.
166
A gente vai fazer uma Classe do tipo Actor, tá?
167
Só para esclarecer aí.
168
Isto feito...
169
Não vai mudar muita coisa ainda. Porque a gente vai dar Play.
170
E vai continuar igual.
171
Né?
172
Você percebe que não tem mais a colisão.
173
Eu posso passar por cima.
174
Porque ele esta ignorando eu mesmo, né?
175
Ele não tem colisão comigo mesmo.
176
Tá?
177
Mas, ele tem colisão com o mundo.
178
Tá bom.
179
A gente vai fazer agora o seguinte... Eu preciso dar uma velocidade para esse projétil.
180
Para ele não ficar parado no chão, né?
181
Ficar parado no ar, ali.
182
Por nossa sorte...
183
A Unreal já tem isso pronto pra gente.
184
Eu vou adicionar um Componente, chamado...
185
Projectile.
186
Projectile Movement.
187
Já é um Componente que vai cuidar de tudo isso pra gente. Da velocidade do projétil, tá?
188
Então, quando eu clico aqui em ProjectileMovement...
189
A gente tem todos os detalhes.
190
E nesses detalhes, a gente tem as questões de velocidade...
191
Né?
192
Speed.
193
A gente tem Velocity.
194
Que vai dar a direção para você.
195
Para onde ele vai.
196
Né?
197
E vai dar as questões de gravidade, que está aqui.
198
ProjectileGratitute. Se a gente quiser que ele caia no chão.
199
Tá? Então vamos resolver isso aí.
200
Cada projétil tem um jeito diferente.
201
Né? Nem todos são iguais.
202
Eu vou colocar os valores que eu tinha colocado para o meu.
203
Que eu achei que...
204
Funcionou bem.
205
Então, em velocidade, eu vou colocar 15.000.
206
Escala, no meu caso, eu vou tirar. Eu não quero que o meu projétil caia no chão.
207
Eu quero que ele vá infinitamente para a frente.
208
E, basicamente, é isso. Eu vou Compilar.
209
Já vai ver uma mudança bem drástica aí.
210
Você está vendo. Está difícil de ver, né?
211
Está indo o negócio para a frente.
212
Está bem pequenininho.
213
Eu vou aumentar ele agora, então.
214
Se não, a gente não vai conseguir ver.
215
Isso é a escala que está vindo daqui.
216
O Scale que está vindo daqui, né?
217
Se a gente fizer um...
218
Deixa eu só desconectar.
219
Fizer um Split Structure Pin.
220
Clicar em Split Structure Pin.
221
A gente coloca... Pega só a posição.
222
E só a rotação.
223
E aí, a gente digita... Opa!
224
Só a rotação.
225
E a gente digita aqui, o valor que a gente quiser para esse cara. Eu vou deixar em 1.
226
Tá?
227
E vou dar Play. Então, agora, o meu cubinho está maior.
228
E está aparecendo no mundo.
229
Tudo fica bem difícil de ver, porque a gente não tem ainda a cor de nada, né?
230
Mas, se eu segurar, ele está dando tiro...
231
E aí, quantos tiros eu vou dar por segundo? Isso é muito fácil.
232
É só a gente mudar.
233
Lá na nossa arma. Aqui... Shoot per Second.
234
Shoot per Second.
235
Então agora eu posso mudar aqui, por exemplo, para 2 tiros por segundo.
236
Então, agora é o dobro.
237
Vou colocar 5 tiros por segundo.
238
Tá? A gente coloca o valor que a gente quiser ali.
239
E, maravilha.
240
Tá?
241
Uma coisa que a gente pode fazer aqui. Só um detalhezinho a mais...
242
Aqui em projétil...
243
A gente vai em ProjectileMovement.
244
E liga Rotation Follows Velocity.
245
Isso aqui vai dar um resultado melhor pra gente, quando estiver rotacionando...
246
Para que o projétil siga essa velocidade aí.
247
Tá? Te dá um resultado melhor.
248
Você pode testar sem e com, depois. Para você ver a diferença.
249
Tá bom?
250
O último ajuste que a gente precisa fazer...
251
Que você talvez já tenha percebido.
252
Se eu deixar...
253
O Player atirando, né?
254
Você percebe que o meu projétil...
255
Ele está andando. Ele vai para um lado e para o outro.
256
E isso é péssimo para um jogo de Shooter, né?
257
Porque eu estou mirando em um personagem.
258
E o meu projétil está balançando.
259
Isso está acontecendo porque a gente fez o seguinte...
260
A gente colocou o nosso Arrow...
261
Linkado na nossa arma, né?
262
Como a arma tem uma animação, ela fica balançando de um lado para o outro.
263
E o nosso tiro vai junto.
264
A gente quer que o nosso tiro sempre fique apontando...
265
Para o mesmo lugar...
266
Que a gente está mirando.
267
Então, uma solução que a gente vai fazer é o seguinte... A gente não vai usar o Arrow.
268
Conectado na arma. A gente vai pegar um Arrow conectado no Hero.
269
Tá?
270
Então eu vou criar um Arrow aqui. A gente não tem ainda.
271
Então, Novo Componente.
272
Arrow.
273
Arrow.
274
Tá. Aí, eu vou conectar ele na câmera.
275
Deixar ele dentro da câmera.
276
Para ele seguir a mira, né? Do personagem.
277
E vou chamar de...
278
ArrowProjétil.
279
Então, esse cara, agora, vai ser a minha referência, tá?
280
Por enquanto ele está lá no pé do personagem, basicamente.
281
Eu vou colocar aqui...
282
Depois a gente ajusta a posição.
283
Tá? Mais para a frente.
284
Compilar e Salvar.
285
Então, aqui na minha arma, agora, eu não vou utilizar mais esse cara.
286
Eu vou até jogar esse cara fora.
287
Aqui vai dar erro, né? Porque esse GetWorldTransform estava utilizando esse Arrow.
288
Então, agora não está utilizando mais nada.
289
Então, eu vou fazer o seguinte.
290
Aqui no BeginPlay...
291
Na arma. Eu estou dentro da arma. Eu vou pegar o meu personagem, em primeiro lugar.
292
GetPlayerCharacter.
293
Isso aqui é das nossas aulinhas lá, de...
294
Comunicação entre Blueprints.
295
Cast to BP_HeroChar.
296
E esse cara vai virar uma variável.
297
Que eu vou chamar de...
298
HeroRefer. Referência do Herói, né? HeroRefer.
299
E isso acontece logo que o jogo começar.
300
Então, eu tenho esse cara aqui...
301
Eu vou comentar, né? É sempre bom comentar o código.
302
Get Hero...
303
Char Referência.
304
Então, agora que eu tenho a referência dele, eu posso acessar...
305
O Arrow que está dentro dele, lá. Então, Get...
306
E aí, eu pego o Arrow. GetArrow...
307
É a última opçãozinha aqui, né? Get Arrow Projétil.
308
Então, agora a gente vai utilizar esse cara como referência de WorldTransform.
309
Tá?
310
Eu vou deixar o Scale conectado também.
311
Beleza. Vamos só testar.
312
Compilar e dar Play.
313
Agora, mesmo que a minha animação da arma esteja movendo, né?
314
O meu tiro sempre aponta para o mesmo lugar.
315
Tá?
316
Agora é questão de a gente fazer os ajustes finos, né?
317
Eu vou colocar aqui, já, os valores que eu tinha utilizado no meu jogo, né?
318
Pra gente não precisar ficar testando valores.
319
Então, esse Arrow aqui, no meu jogo, está posicionado em 70...
320
16 e -10.
321
E a escala 2.5.
322
Tá?
323
A gente não vai conseguir ver exatamente...
324
Perfeito, por causa que a gente não tem os materiais ainda.
325
Né?
326
Nosso visual ainda está bem...
327
Está bem tosquinho.
328
Tá? Mas isso aqui já está funcionando.
329
São exatamente os mesmos valores que eu utilizei no meu projeto.
330
Tá? Só pra gente não precisar ficar...
331
Descobrindo.
332
Então, agora, a grande questão é que, mesmo com a animação da arma...
333
Se movendo.
334
A gente está sempre apontando a mira para o mesmo lugar.
335
Tá?
336
E agora está na hora de a gente começar a implementar os inimigos, né?
337
Então, vamos começar a fazer isso nas próximas aulas.
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.