‫Olá e bem-vindo de volta.
‫Agora, neste vídeo, vamos começar a falar sobre como podemos mover nosso tanque.
‫Então, para mover o tanque, teremos que adicionar algum tipo de compensação e um motor irreal.
‫Quando se trata de adicionar um deslocamento, precisamos tomar a decisão de fazer o deslocamento no espaço
‫local versus o espaço mundial.
‫Então, vamos discutir a diferença entre essas duas coisas.
‫Agora, aqui no editor, eu tenho o -- tanque selecionado, e assim que eu selecionar isso,
‫você notará que há um gizmo.
‫É assim que essa coisa é chamada, um aparelho.
‫Tem três setas e cada uma é de uma cor diferente.
‫Agora, se você não percebeu, no canto inferior esquerdo da tela há outro aparelho menor.
‫E isso se parece com o aparelho do ator que estamos selecionando.
‫Então, se eu selecionar qualquer ator, sempre recebemos esse aparelho.
‫E, claro, o gizmo muda quando passamos do modo de translação para rotação para o modo de escala.
‫Assim, enquanto estivermos em traduzir, que podemos acessar a partir deste ícone mais à esquerda no canto
‫superior direito da janela de visualização ou com a tecla W, temos a capacidade de mover coisas ou traduzi-las arrastando uma
‫das setas no aparelho.
‫E as cores correspondem aos eixos vermelho como o eixo x verde é o eixo y e azul é o eixo z.
‫Agora, se girarmos nossa visão e olharmos em uma direção diferente, veremos que aquele aparelho ainda
‫aponta na mesma direção original.
‫E enquanto estamos girando, o gizmo na parte inferior esquerda da janela de visualização está girando
‫porque a direção do mundo não muda.
‫Até agora tudo bem.
‫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
‫local.
‫E podemos ver que clicando neste ícone que se parece com um mundo e o pop-up diz ciclos, o gizmo
‫de transformação coordena os sistemas entre o mundo e o espaço local.
‫Quando vemos um mundo aqui, isso significa que estamos olhando para o espaço do mundo, mas se clicarmos
‫nele, ele agora se transforma em um cubo e agora estamos olhando para o espaço local para o determinado ator que selecionamos.
‫O gizmo na parte inferior esquerda da janela de visualização ainda nos mostra o espaço do mundo.
‫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,
‫você verá que o gizmo agora está apontando em uma direção diferente.
‫O próprio ator tem seu próprio eixo x local.
‫Podemos pensar no eixo x para o ator como seu vetor direto.
‫Agora observe que no canto inferior esquerdo da tela esse gizmo ainda está apontando na mesma direção.
‫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.
‫Agora, se eu clicar no cubo aqui e transformá-lo de volta em um mundo agora, o gizmo para o tanque
‫é combinado e alinhado com a direção do eixo mundial para que possamos alternar entre o espaço mundial e local
‫para qualquer ator ver seu local direção versus sua direção mundial.
‫Então vimos que para qualquer ator que selecionamos em nosso mundo, ele tem sua própria direção local.
‫E isso pode ou não ser diferente da direção do mundo, conforme indicado nesta imagem aqui.
‫Portanto, isso é muito importante quando se trata de mover objetos no Unreal Engine.
‫Existem funções para mover objetos e há um conjunto diferente de funções para mover no espaço
‫do mundo versus o espaço local.
‫Digamos que nosso tanque esteja voltado para este lado e seu eixo x esteja apontando levemente para a esquerda, conforme
‫indicado pela seta que desenhei aqui no tanque.
‫Agora podemos ver, com base neste gizmo no canto inferior esquerdo, que a direção do eixo x mundo está apontando
‫para a direita.
‫Portanto, o tanque não está alinhado com a direção do espaço mundial.
‫Agora, digamos que devíamos mover este tanque no espaço do mundo na direção X positiva.
‫Então, mesmo que o tanque esteja apontando para a esquerda, ele ainda se moverá naquela direção x mundo e parecerá
‫que está se movendo para trás.
‫Então não é isso que queremos.
‫Agora, por outro lado, digamos que usamos uma função projetada para mover o tanque em seu próprio espaço
‫local.
‫Isso significa que se movermos o tanque em sua própria direção X local, ele avançará na direção que você
‫esperaria.
‫E esse é o comportamento que queremos.
‫Agora no Unreal Engine.
‫A função que pode fazer isso para nós é chamada Add Actor Local Offset.
‫Esta função move o ator em uma direção local.
‫Agora aplica um deslocamento, que é um movimento único.
‫Essencialmente, dizemos a ele em qual direção se mover e quão longe, e ele move esse objeto uma vez, o que significa
‫que vamos chamar essa função a cada quadro em que queremos mover o tanque.
‫Então, vamos movê-lo em pequenos incrementos desde que chamamos uma função a cada quadro.
‫Significa que estamos chamando muito agora para o nosso tanque, seu próprio eixo X local é sua direção para frente.
‫Este é o eixo que vamos usar quando adicionarmos um deslocamento local.
‫Agora, aqui está a documentação do mecanismo irreal para o deslocamento local do ator ADD.
‫Você vê que é uma função que pertence à classe ator.
‫É por isso que agora é chamado de adicionar deslocamento local do ator porque existe na classe do ator.
‫Os peões herdarão esta função para que possamos usá-la.
‫Agora aqui está a sintaxe.
‫Possui quatro parâmetros de entrada.
‫O primeiro é um vetor F chamado localização delta.
‫Então, vamos precisar criar um vetor F que possamos passar para essa função de deslocamento local de adicionar ator.
‫Portanto, sabemos sobre esse deslocamento local do ator adicionado.
‫E eu gostaria de experimentar isso só para ver como funciona para que possamos fazer isso na função tick.
‫Agora não estamos sobrescrevendo a função tic aqui na classe tank, mas a temos na classe base
‫pong.
‫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
‫fazer algumas experimentações.
‫Então o que eu vou fazer é digitar, adicionar, ator, deslocamento local assim.
‫E eu vou clicar com o botão direito e selecionar ir para definição.
‫Agora aqui no arquivo CP do ator, temos a definição para ADD Actor Local Offset.
‫Agora observe algo interessante.
‫Ele está verificando se o componente raiz não é nulo e se não é nulo, ele chama essa função add local
‫offset.
‫Então, na verdade, o que estamos fazendo é adicionar um deslocamento ao componente raiz.
‫E como todos os outros componentes estão anexados ao componente raiz, eles se moverão junto com ele.
‫Portanto, é importante observar que, quando adicionamos um deslocamento local, estamos movendo o componente
‫raiz e todo o resto se move com ele.
‫Agora, se passarmos o mouse sobre adicionar deslocamento local, veremos que todos os quatro parâmetros de entrada estão listados
‫aqui.
‫E além do primeiro, que é um vetor F, os demais possuem valores padrão.
‫Observe a varredura bool B que diz que é igual a falso.
‫O terceiro e quarto parâmetros de entrada também possuem esses valores padrão.
‫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
‫definidos para esses valores por padrão.
‫Agora vou fechar o ator CP e aqui na função base pond tick eu gostaria de chamar add ator local offset
‫cada quadro só para ver como funciona.
‫Agora sabemos que o primeiro parâmetro de entrada é um vetor F.
‫Chama-se localização delta.
‫Esta é a quantidade de movimento que gostaríamos de adicionar cada vez que chamamos esta função.
‫Então, vou criar um vetor F chamado localização delta.
‫Então F localização delta do vetor.
‫Agora eu gostaria de zerar este vetor.
‫Em outras palavras, certifique-se de que ele seja inicializado com todos os zeros.
‫Agora eu quero um vetor zero que eu possa passar em zero f, um x, y e z todos terão zero f.
‫Então isso vai servir muito bem aos meus propósitos.
‫Agora vou pegar o Delta Location X e vou mudar isso para dois pontos F.
‫Dessa forma, temos um vetor com Y e Z definido como zero, um x definido como dois.
‫Então, vou seguir em frente e passar a localização Delta para adicionar deslocamento local do ator como uma espécie de experimento.
‫Agora posso me safar chamando add actor local offset e apenas passando o primeiro parâmetro de entrada, pois
‫os outros três são opcionais.
‫Então eu vou compilar isso e ver o que acontece.
‫Agora, se formos em frente e apertar o play, observe, algumas coisas.
‫Em primeiro lugar, veja, a torre também está se movendo.
‫Isso porque colocamos isso na função tick para o peão base e ambos os títulos herdam do peão
‫base.
‫Então, na verdade, todas essas lagoas estavam se movendo.
‫E o interessante é que todos eles estão se movendo em suas próprias direções do eixo x.
‫Podemos ver tudo se mover ao mesmo tempo desse ponto de vista.
‫Se clicarmos no menu suspenso ao lado de jogar e selecionar simular, isso nos permitirá jogar o jogo sem
‫possuir nenhum lago.
‫Então, se eu clicar em Simular, verifique isso.
‫Cada lagoa está se movendo em sua própria direção do eixo x.
‫Isso é realmente muito estranho e muito legal.
‫Isso nos mostra como funciona a compensação local do ator publicitário.
‫Ele move as coisas em suas direções locais.
‫Agora podemos sair do modo de simulação clicando no menu suspenso e selecionando a janela de visualização selecionada
‫e isso nos permitirá jogar no modo de reprodução normal.
‫Tudo bem, vou parar com isso e podemos voltar para a base -- e podemos remover esse código experimental.
‫Vou seguir em frente e excluí-lo da função tick para que agora saibamos como o deslocamento local
‫do ator funciona.
‫Então vamos voltar ao Tank CP e aqui temos a função MOVE.
‫Sabemos que essa função está sendo chamada a cada quadro e sabemos que o valor é igual a um.
‫Se estivermos pressionando a tecla W e for negativo, se pressionarmos a tecla e for zero, se pressionarmos
‫os dois ou nenhum.
‫Então, para o seu desafio, você vai mover o tanque usando o deslocamento local do ator adicionado.
‫Então na função MOV você vai criar um vetor F chamado localização delta.
‫Agora certifique-se de zerar X, Y e z.
‫Você pode fazer isso de várias maneiras, como usar um dos vários construtores de vetor f.
‫Agora, uma vez que você zerou todos os componentes, defina seu x para o valor do valor que flutua o parâmetro
‫de entrada na função MOV.
‫Depois de fazer isso, vá em frente e chame add actor local offset passando em delta location.
‫Pause o vídeo e faça isso agora.
‫OK.
‫Então estou de volta aqui no arquivo CP do tanque.
‫Agora, eu não preciso mais desse log EWI, então vou tirá-lo e criar um vetor F chamado
‫localização Delta.
‫Agora posso usar um dos construtores de vetor F.
‫Já mostrei como criar um novo vetor com todos os zeros.
‫Vou mostrar outra maneira, que é inicializar isso com vetor f, vetor zero.
‫E é exatamente isso que parece, um vetor com zero para cada componente.
‫Isto é apenas para mostrar-lhe uma maneira alternativa.
‫Então temos um vetor zero.
‫Agora vou pegar a localização delta X e igualá-la ao valor.
‫E, finalmente, posso chamar add actor local offset passando na localização delta.
‫Então vamos compilar isso e de volta aqui no editor, eu vou pegar meu tanque e vou orientá-lo para
‫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.
‫Se eu pressionar a tecla W, estou avançando e se pressionar a tecla, estou voltando.
‫Se eu pressionar os dois, eles se cancelam e eu não me mexo.
‫E, claro, se eu não pressionar nada, também não me movo.
‫Agora temos movimento para nosso tanque, mas está um pouco lento, então teremos que fazer alguns ajustes.
‫E também vamos falar sobre o ajuste fino dessa mecânica de movimento com nosso tanque.
‫Então, em resumo, aprendemos sobre ADD Actor, deslocamento local e a diferença entre espaço mundial
‫e espaço local.
‫No próximo vídeo, continuaremos aperfeiçoando essa mecânica de movimento com nosso tanque.
‫Vejo você em breve.