﻿1
00:00:04,130 --> 00:00:06,050
‫Olá e bem-vindo de volta.

2
00:00:06,080 --> 00:00:10,010
‫Agora, neste vídeo, vamos começar a falar sobre como podemos mover nosso tanque.

3
00:00:10,160 --> 00:00:16,010
‫Então, para mover o tanque, teremos que adicionar algum tipo de compensação e um motor irreal.

4
00:00:16,010 --> 00:00:21,650
‫Quando se trata de adicionar um deslocamento, precisamos tomar a decisão de fazer o deslocamento no espaço

5
00:00:21,650 --> 00:00:23,690
‫local versus o espaço mundial.

6
00:00:23,690 --> 00:00:26,840
‫Então, vamos discutir a diferença entre essas duas coisas.

7
00:00:27,200 --> 00:00:34,220
‫Agora, aqui no editor, eu tenho o -- tanque selecionado, e assim que eu selecionar isso,

8
00:00:34,220 --> 00:00:36,560
‫você notará que há um gizmo.

9
00:00:36,590 --> 00:00:38,720
‫É assim que essa coisa é chamada, um aparelho.

10
00:00:38,720 --> 00:00:41,810
‫Tem três setas e cada uma é de uma cor diferente.

11
00:00:41,810 --> 00:00:47,360
‫Agora, se você não percebeu, no canto inferior esquerdo da tela há outro aparelho menor.

12
00:00:47,360 --> 00:00:53,000
‫E isso se parece com o aparelho do ator que estamos selecionando.

13
00:00:53,000 --> 00:00:56,750
‫Então, se eu selecionar qualquer ator, sempre recebemos esse aparelho.

14
00:00:56,750 --> 00:01:02,660
‫E, claro, o gizmo muda quando passamos do modo de translação para rotação para o modo de escala.

15
00:01:02,660 --> 00:01:09,020
‫Assim, enquanto estivermos em traduzir, que podemos acessar a partir deste ícone mais à esquerda no canto

16
00:01:09,020 --> 00:01:16,550
‫superior direito da janela de visualização ou com a tecla W, temos a capacidade de mover coisas ou traduzi-las arrastando uma

17
00:01:16,550 --> 00:01:18,260
‫das setas no aparelho.

18
00:01:18,260 --> 00:01:26,180
‫E as cores correspondem aos eixos vermelho como o eixo x verde é o eixo y e azul é o eixo z.

19
00:01:26,210 --> 00:01:32,000
‫Agora, se girarmos nossa visão e olharmos em uma direção diferente, veremos que aquele aparelho ainda

20
00:01:32,000 --> 00:01:34,070
‫aponta na mesma direção original.

21
00:01:34,070 --> 00:01:40,520
‫E enquanto estamos girando, o gizmo na parte inferior esquerda da janela de visualização está girando

22
00:01:40,520 --> 00:01:42,740
‫porque a direção do mundo não muda.

23
00:01:42,740 --> 00:01:44,060
‫Até agora tudo bem.

24
00:01:44,060 --> 00:01:51,530
‫Agora o que estamos vendo são as direções do espaço do mundo, mas para cada ator no mundo, há uma direção

25
00:01:51,530 --> 00:01:52,310
‫local.

26
00:01:52,310 --> 00:01:58,670
‫E podemos ver que clicando neste ícone que se parece com um mundo e o pop-up diz ciclos, o gizmo

27
00:01:58,670 --> 00:02:03,560
‫de transformação coordena os sistemas entre o mundo e o espaço local.

28
00:02:03,560 --> 00:02:09,050
‫Quando vemos um mundo aqui, isso significa que estamos olhando para o espaço do mundo, mas se clicarmos

29
00:02:09,080 --> 00:02:16,700
‫nele, ele agora se transforma em um cubo e agora estamos olhando para o espaço local para o determinado ator que selecionamos.

30
00:02:16,700 --> 00:02:21,110
‫O gizmo na parte inferior esquerda da janela de visualização ainda nos mostra o espaço do mundo.

31
00:02:21,110 --> 00:02:27,560
‫Mas se eu pegar esse ator e mudar para o modo de rotação e girá-lo, quando eu voltar para o modo de tradução,

32
00:02:27,560 --> 00:02:32,390
‫você verá que o gizmo agora está apontando em uma direção diferente.

33
00:02:32,390 --> 00:02:36,680
‫O próprio ator tem seu próprio eixo x local.

34
00:02:36,680 --> 00:02:40,730
‫Podemos pensar no eixo x para o ator como seu vetor direto.

35
00:02:40,730 --> 00:02:46,520
‫Agora observe que no canto inferior esquerdo da tela esse gizmo ainda está apontando na mesma direção.

36
00:02:46,520 --> 00:02:54,530
‫Mas este ator aqui, o tanque de peões, tem sua própria direção X local e está apontando em uma direção diferente.

37
00:02:54,530 --> 00:03:01,250
‫Agora, se eu clicar no cubo aqui e transformá-lo de volta em um mundo agora, o gizmo para o tanque

38
00:03:01,250 --> 00:03:09,050
‫é combinado e alinhado com a direção do eixo mundial para que possamos alternar entre o espaço mundial e local

39
00:03:09,050 --> 00:03:14,330
‫para qualquer ator ver seu local direção versus sua direção mundial.

40
00:03:14,690 --> 00:03:20,540
‫Então vimos que para qualquer ator que selecionamos em nosso mundo, ele tem sua própria direção local.

41
00:03:20,540 --> 00:03:27,320
‫E isso pode ou não ser diferente da direção do mundo, conforme indicado nesta imagem aqui.

42
00:03:27,440 --> 00:03:33,200
‫Portanto, isso é muito importante quando se trata de mover objetos no Unreal Engine.

43
00:03:33,200 --> 00:03:38,990
‫Existem funções para mover objetos e há um conjunto diferente de funções para mover no espaço

44
00:03:38,990 --> 00:03:41,150
‫do mundo versus o espaço local.

45
00:03:41,150 --> 00:03:47,480
‫Digamos que nosso tanque esteja voltado para este lado e seu eixo x esteja apontando levemente para a esquerda, conforme

46
00:03:47,480 --> 00:03:50,150
‫indicado pela seta que desenhei aqui no tanque.

47
00:03:50,150 --> 00:03:55,910
‫Agora podemos ver, com base neste gizmo no canto inferior esquerdo, que a direção do eixo x mundo está apontando

48
00:03:55,910 --> 00:03:56,720
‫para a direita.

49
00:03:56,720 --> 00:04:00,200
‫Portanto, o tanque não está alinhado com a direção do espaço mundial.

50
00:04:00,410 --> 00:04:05,660
‫Agora, digamos que devíamos mover este tanque no espaço do mundo na direção X positiva.

51
00:04:05,660 --> 00:04:12,020
‫Então, mesmo que o tanque esteja apontando para a esquerda, ele ainda se moverá naquela direção x mundo e parecerá

52
00:04:12,020 --> 00:04:14,300
‫que está se movendo para trás.

53
00:04:14,300 --> 00:04:15,950
‫Então não é isso que queremos.

54
00:04:15,980 --> 00:04:22,250
‫Agora, por outro lado, digamos que usamos uma função projetada para mover o tanque em seu próprio espaço

55
00:04:22,250 --> 00:04:22,910
‫local.

56
00:04:22,940 --> 00:04:30,620
‫Isso significa que se movermos o tanque em sua própria direção X local, ele avançará na direção que você

57
00:04:30,620 --> 00:04:31,760
‫esperaria.

58
00:04:31,760 --> 00:04:34,310
‫E esse é o comportamento que queremos.

59
00:04:34,340 --> 00:04:35,690
‫Agora no Unreal Engine.

60
00:04:35,690 --> 00:04:40,190
‫A função que pode fazer isso para nós é chamada Add Actor Local Offset.

61
00:04:40,190 --> 00:04:43,970
‫Esta função move o ator em uma direção local.

62
00:04:44,090 --> 00:04:47,900
‫Agora aplica um deslocamento, que é um movimento único.

63
00:04:47,930 --> 00:04:54,140
‫Essencialmente, dizemos a ele em qual direção se mover e quão longe, e ele move esse objeto uma vez, o que significa

64
00:04:54,140 --> 00:04:58,790
‫que vamos chamar essa função a cada quadro em que queremos mover o tanque.

65
00:04:58,790 --> 00:05:03,530
‫Então, vamos movê-lo em pequenos incrementos desde que chamamos uma função a cada quadro.

66
00:05:03,680 --> 00:05:11,480
‫Significa que estamos chamando muito agora para o nosso tanque, seu próprio eixo X local é sua direção para frente.

67
00:05:11,480 --> 00:05:16,010
‫Este é o eixo que vamos usar quando adicionarmos um deslocamento local.

68
00:05:16,400 --> 00:05:20,990
‫Agora, aqui está a documentação do mecanismo irreal para o deslocamento local do ator ADD.

69
00:05:20,990 --> 00:05:24,590
‫Você vê que é uma função que pertence à classe ator.

70
00:05:24,590 --> 00:05:29,990
‫É por isso que agora é chamado de adicionar deslocamento local do ator porque existe na classe do ator.

71
00:05:29,990 --> 00:05:33,140
‫Os peões herdarão esta função para que possamos usá-la.

72
00:05:33,170 --> 00:05:34,820
‫Agora aqui está a sintaxe.

73
00:05:34,820 --> 00:05:37,220
‫Possui quatro parâmetros de entrada.

74
00:05:37,220 --> 00:05:41,090
‫O primeiro é um vetor F chamado localização delta.

75
00:05:41,090 --> 00:05:47,630
‫Então, vamos precisar criar um vetor F que possamos passar para essa função de deslocamento local de adicionar ator.

76
00:05:47,630 --> 00:05:50,840
‫Portanto, sabemos sobre esse deslocamento local do ator adicionado.

77
00:05:50,840 --> 00:05:56,930
‫E eu gostaria de experimentar isso só para ver como funciona para que possamos fazer isso na função tick.

78
00:05:56,930 --> 00:06:03,590
‫Agora não estamos sobrescrevendo a função tic aqui na classe tank, mas a temos na classe base

79
00:06:03,590 --> 00:06:04,250
‫pong.

80
00:06:04,250 --> 00:06:10,490
‫Se formos para a base da lagoa CP aqui temos a função tic e não estamos fazendo nada aqui e isso é perfeito para

81
00:06:10,490 --> 00:06:12,710
‫fazer algumas experimentações.

82
00:06:12,710 --> 00:06:18,530
‫Então o que eu vou fazer é digitar, adicionar, ator, deslocamento local assim.

83
00:06:18,530 --> 00:06:22,760
‫E eu vou clicar com o botão direito e selecionar ir para definição.

84
00:06:22,760 --> 00:06:28,520
‫Agora aqui no arquivo CP do ator, temos a definição para ADD Actor Local Offset.

85
00:06:28,520 --> 00:06:30,170
‫Agora observe algo interessante.

86
00:06:30,170 --> 00:06:37,280
‫Ele está verificando se o componente raiz não é nulo e se não é nulo, ele chama essa função add local

87
00:06:37,280 --> 00:06:37,910
‫offset.

88
00:06:37,910 --> 00:06:41,720
‫Então, na verdade, o que estamos fazendo é adicionar um deslocamento ao componente raiz.

89
00:06:41,720 --> 00:06:46,970
‫E como todos os outros componentes estão anexados ao componente raiz, eles se moverão junto com ele.

90
00:06:46,970 --> 00:06:51,740
‫Portanto, é importante observar que, quando adicionamos um deslocamento local, estamos movendo o componente

91
00:06:51,740 --> 00:06:53,480
‫raiz e todo o resto se move com ele.

92
00:06:53,480 --> 00:06:59,810
‫Agora, se passarmos o mouse sobre adicionar deslocamento local, veremos que todos os quatro parâmetros de entrada estão listados

93
00:06:59,810 --> 00:07:00,290
‫aqui.

94
00:07:00,290 --> 00:07:06,140
‫E além do primeiro, que é um vetor F, os demais possuem valores padrão.

95
00:07:06,140 --> 00:07:09,800
‫Observe a varredura bool B que diz que é igual a falso.

96
00:07:09,800 --> 00:07:14,840
‫O terceiro e quarto parâmetros de entrada também possuem esses valores padrão.

97
00:07:14,840 --> 00:07:21,740
‫Isso significa que, se chamarmos essa função e não passarmos entradas para os três últimos parâmetros de entrada, eles serão

98
00:07:21,740 --> 00:07:24,290
‫definidos para esses valores por padrão.

99
00:07:24,320 --> 00:07:31,220
‫Agora vou fechar o ator CP e aqui na função base pond tick eu gostaria de chamar add ator local offset

100
00:07:31,220 --> 00:07:34,280
‫cada quadro só para ver como funciona.

101
00:07:34,400 --> 00:07:37,790
‫Agora sabemos que o primeiro parâmetro de entrada é um vetor F.

102
00:07:37,790 --> 00:07:39,470
‫Chama-se localização delta.

103
00:07:39,470 --> 00:07:44,030
‫Esta é a quantidade de movimento que gostaríamos de adicionar cada vez que chamamos esta função.

104
00:07:44,030 --> 00:07:48,380
‫Então, vou criar um vetor F chamado localização delta.

105
00:07:48,380 --> 00:07:51,800
‫Então F localização delta do vetor.

106
00:07:51,980 --> 00:07:54,350
‫Agora eu gostaria de zerar este vetor.

107
00:07:54,350 --> 00:07:58,340
‫Em outras palavras, certifique-se de que ele seja inicializado com todos os zeros.

108
00:07:58,430 --> 00:08:05,870
‫Agora eu quero um vetor zero que eu possa passar em zero f, um x, y e z todos terão zero f.

109
00:08:05,870 --> 00:08:08,450
‫Então isso vai servir muito bem aos meus propósitos.

110
00:08:08,480 --> 00:08:14,960
‫Agora vou pegar o Delta Location X e vou mudar isso para dois pontos F.

111
00:08:14,960 --> 00:08:20,540
‫Dessa forma, temos um vetor com Y e Z definido como zero, um x definido como dois.

112
00:08:20,570 --> 00:08:27,770
‫Então, vou seguir em frente e passar a localização Delta para adicionar deslocamento local do ator como uma espécie de experimento.

113
00:08:27,800 --> 00:08:34,310
‫Agora posso me safar chamando add actor local offset e apenas passando o primeiro parâmetro de entrada, pois

114
00:08:34,310 --> 00:08:36,470
‫os outros três são opcionais.

115
00:08:36,500 --> 00:08:39,080
‫Então eu vou compilar isso e ver o que acontece.

116
00:08:40,520 --> 00:08:43,880
‫Agora, se formos em frente e apertar o play, observe, algumas coisas.

117
00:08:43,880 --> 00:08:46,100
‫Em primeiro lugar, veja, a torre também está se movendo.

118
00:08:46,130 --> 00:08:52,250
‫Isso porque colocamos isso na função tick para o peão base e ambos os títulos herdam do peão

119
00:08:52,250 --> 00:08:52,730
‫base.

120
00:08:52,730 --> 00:08:56,060
‫Então, na verdade, todas essas lagoas estavam se movendo.

121
00:08:56,060 --> 00:09:01,280
‫E o interessante é que todos eles estão se movendo em suas próprias direções do eixo x.

122
00:09:01,280 --> 00:09:04,640
‫Podemos ver tudo se mover ao mesmo tempo desse ponto de vista.

123
00:09:04,670 --> 00:09:10,940
‫Se clicarmos no menu suspenso ao lado de jogar e selecionar simular, isso nos permitirá jogar o jogo sem

124
00:09:10,940 --> 00:09:12,260
‫possuir nenhum lago.

125
00:09:12,260 --> 00:09:14,810
‫Então, se eu clicar em Simular, verifique isso.

126
00:09:14,810 --> 00:09:18,580
‫Cada lagoa está se movendo em sua própria direção do eixo x.

127
00:09:18,590 --> 00:09:22,070
‫Isso é realmente muito estranho e muito legal.

128
00:09:22,070 --> 00:09:25,760
‫Isso nos mostra como funciona a compensação local do ator publicitário.

129
00:09:25,760 --> 00:09:28,220
‫Ele move as coisas em suas direções locais.

130
00:09:28,280 --> 00:09:34,220
‫Agora podemos sair do modo de simulação clicando no menu suspenso e selecionando a janela de visualização selecionada

131
00:09:34,220 --> 00:09:38,000
‫e isso nos permitirá jogar no modo de reprodução normal.

132
00:09:38,030 --> 00:09:45,220
‫Tudo bem, vou parar com isso e podemos voltar para a base -- e podemos remover esse código experimental.

133
00:09:45,230 --> 00:09:51,320
‫Vou seguir em frente e excluí-lo da função tick para que agora saibamos como o deslocamento local

134
00:09:51,320 --> 00:09:52,700
‫do ator funciona.

135
00:09:52,880 --> 00:09:56,780
‫Então vamos voltar ao Tank CP e aqui temos a função MOVE.

136
00:09:56,780 --> 00:10:02,960
‫Sabemos que essa função está sendo chamada a cada quadro e sabemos que o valor é igual a um.

137
00:10:03,080 --> 00:10:09,260
‫Se estivermos pressionando a tecla W e for negativo, se pressionarmos a tecla e for zero, se pressionarmos

138
00:10:09,260 --> 00:10:10,970
‫os dois ou nenhum.

139
00:10:11,420 --> 00:10:16,340
‫Então, para o seu desafio, você vai mover o tanque usando o deslocamento local do ator adicionado.

140
00:10:16,340 --> 00:10:21,350
‫Então na função MOV você vai criar um vetor F chamado localização delta.

141
00:10:21,350 --> 00:10:24,440
‫Agora certifique-se de zerar X, Y e z.

142
00:10:24,560 --> 00:10:30,680
‫Você pode fazer isso de várias maneiras, como usar um dos vários construtores de vetor f.

143
00:10:30,680 --> 00:10:37,760
‫Agora, uma vez que você zerou todos os componentes, defina seu x para o valor do valor que flutua o parâmetro

144
00:10:37,760 --> 00:10:39,620
‫de entrada na função MOV.

145
00:10:39,620 --> 00:10:45,410
‫Depois de fazer isso, vá em frente e chame add actor local offset passando em delta location.

146
00:10:45,860 --> 00:10:48,140
‫Pause o vídeo e faça isso agora.

147
00:10:51,220 --> 00:10:51,670
‫OK.

148
00:10:51,670 --> 00:10:54,610
‫Então estou de volta aqui no arquivo CP do tanque.

149
00:10:54,610 --> 00:11:00,370
‫Agora, eu não preciso mais desse log EWI, então vou tirá-lo e criar um vetor F chamado

150
00:11:00,370 --> 00:11:02,440
‫localização Delta.

151
00:11:02,440 --> 00:11:05,650
‫Agora posso usar um dos construtores de vetor F.

152
00:11:05,650 --> 00:11:09,430
‫Já mostrei como criar um novo vetor com todos os zeros.

153
00:11:09,430 --> 00:11:15,700
‫Vou mostrar outra maneira, que é inicializar isso com vetor f, vetor zero.

154
00:11:16,270 --> 00:11:21,520
‫E é exatamente isso que parece, um vetor com zero para cada componente.

155
00:11:21,550 --> 00:11:23,980
‫Isto é apenas para mostrar-lhe uma maneira alternativa.

156
00:11:23,980 --> 00:11:25,510
‫Então temos um vetor zero.

157
00:11:25,510 --> 00:11:31,270
‫Agora vou pegar a localização delta X e igualá-la ao valor.

158
00:11:31,570 --> 00:11:39,670
‫E, finalmente, posso chamar add actor local offset passando na localização delta.

159
00:11:40,630 --> 00:11:47,260
‫Então vamos compilar isso e de volta aqui no editor, eu vou pegar meu tanque e vou orientá-lo para

160
00:11:47,260 --> 00:11:55,270
‫que fique voltado para a direção X do mundo e então eu posso apertar play e agora clicar na janela de visualização.

161
00:11:55,270 --> 00:12:00,880
‫Se eu pressionar a tecla W, estou avançando e se pressionar a tecla, estou voltando.

162
00:12:00,880 --> 00:12:05,230
‫Se eu pressionar os dois, eles se cancelam e eu não me mexo.

163
00:12:05,230 --> 00:12:08,140
‫E, claro, se eu não pressionar nada, também não me movo.

164
00:12:08,140 --> 00:12:13,480
‫Agora temos movimento para nosso tanque, mas está um pouco lento, então teremos que fazer alguns ajustes.

165
00:12:13,480 --> 00:12:18,400
‫E também vamos falar sobre o ajuste fino dessa mecânica de movimento com nosso tanque.

166
00:12:18,640 --> 00:12:24,370
‫Então, em resumo, aprendemos sobre ADD Actor, deslocamento local e a diferença entre espaço mundial

167
00:12:24,370 --> 00:12:25,300
‫e espaço local.

168
00:12:25,300 --> 00:12:29,800
‫No próximo vídeo, continuaremos aperfeiçoando essa mecânica de movimento com nosso tanque.

169
00:12:30,010 --> 00:12:31,000
‫Vejo você em breve.

