‫Olá e bem-vindo.
‫Nesta palestra, vamos apresentar funções-membro e obter funções seguras e normais
‫que nos permitirão saber a direção de um determinado vetor.
‫Vamos mergulhar e ver como isso funciona.
‫Portanto, nosso método simples para enviar a plataforma de volta na direção oposta está funcionando nas
‫velocidades em que testamos.
‫Mas o que acontece se eu disser, Ei, vamos fazer essa plataforma funcionar dez vezes mais rápido?
‫Vamos jogar e ver o que acontece.
‫Bem, de repente essas plataformas avançam bastante e não estão pairando no mesmo local
‫de antes.
‫E a razão para isso é porque o local atual, quando o definimos como o local inicial, não
‫é necessariamente exatamente a distância movida.
‫Poderíamos ter ultrapassado e isso é capturado aqui na instrução if.
‫Estamos dizendo que a distância percorrida é maior que a distância percorrida, o que significa que teremos
‫ultrapassado.
‫Temos que ter overshot para ter acionado esta instrução if.
‫Mas a questão é por quanto?
‫E isso vai depender muito de quão grande é o tempo Delta.
‫Podemos ultrapassar em grandes quantidades, especialmente se a velocidade da plataforma for grande, o que significa que
‫nossa localização inicial pode se desviar com o tempo.
‫Pode não ser constante.
‫Portanto, a melhor maneira de fazer isso seria calcular o quão longe precisamos nos mover do local inicial original
‫para chegar ao novo usando a distância exata do movimento.
‫Então, vamos tentar visualizar este cálculo de ida e volta.
‫Estamos dizendo que temos uma plataforma em seu local inicial aqui.
‫Dizemos que tem uma velocidade que podemos representar com uma seta que é uma direção e um tamanho, e também
‫tem uma distância que queremos que se mova, que é representada por esta chave aqui.
‫Agora, o que estamos dizendo é que gostaríamos de descobrir o ponto exato onde a plataforma
‫estaria no final, não ultrapassada, mas exatamente o local final.
‫Agora, a maneira de fazer isso é tomando a direção dessa seta de velocidade.
‫Então, na linguagem vetorial, isso é chamado de normal da seta, e basicamente reduz o tamanho
‫a um.
‫Então nós temos a direção, mas um tamanho de um.
‫Então isso nos permite saber essa contagem, essencialmente o tamanho da velocidade, o quão rápido estamos indo.
‫E então o que podemos fazer é multiplicar essa direção pela quantidade de nossa distância para nos dar uma
‫seta que nos dê todo o movimento desde o local inicial até o local final.
‫Exatamente.
‫Então, vamos dar uma olhada em como podemos fazer isso em C++.
‫O que estamos procurando é um novo local de partida.
‫Então, vamos remover como estamos fazendo isso atualmente e teremos um local de início igual a, bem, a
‫que será igual?
‫Bem, vai ser igual, em primeiro lugar, ao local inicial mais alguma coisa,
‫porque estamos começando daqui e estamos adicionando este vetor verde para chegar ao final.
‫Então, o que é aquele vetor verde ali?
‫Bem, é aí que precisamos obter a normal da velocidade da plataforma.
‫E só para ficar mais fácil de entender, vou dividir isso em sua própria variável.
‫Então, vamos criar um novo tipo de efetor, que vou chamar de direção de movimento, só
‫para deixar bem claro o que estamos tentando armazenar nele
‫e então vamos pegue isso do ponto de velocidade da plataforma, fique seguro, normal e depois alguns parênteses no final.
‫Então o que está acontecendo aqui?
‫Nós não vimos isso antes.
‫Usamos pontos para obter os componentes do vetor, o X, Y e Z.
‫Essas eram variáveis.
‫Mas em C++ e na programação orientada a objetos em geral, também temos funções que existem nas classes, então
‫podemos usar o operador DOT para obter uma delas.
‫Usamos os dois pontos quando tentamos tirá-lo da própria classe.
‫Mas quando queremos fazer uma operação com o próprio vetor real, então vetor de velocidade da plataforma, podemos
‫usar o operador ponto para obter a normal do vetor vinculado.
‫Então é isso que estamos fazendo aqui, usando uma função-membro em vez de uma variável-membro.
‫Então temos o normal seguro da velocidade da plataforma e ponto e vírgula, o fim da linha, porque
‫aqui temos uma variável que é essencialmente a direção do movimento.
‫Então agora podemos usar isso na linha subsequente para fazer uma direção de movimento multiplicada pela distância
‫de movimento configurada porque queremos mover exatamente até o final, não ultrapassar.
‫E depois de fazermos isso, devemos realmente mover nossa plataforma para o local final.
‫Então, vamos definir um local de ator para ser o local de início, porque, caso contrário, nossa plataforma
‫terá ultrapassado e ultrapassado esse local final porque a atualizaremos com o local atual, que é o
‫local de overshot.
‫Então isso nos permite mover exatamente para o ponto final.
‫E então comece a partir desse novo local de partida.
‫Agora é importante atualizar a velocidade da plataforma depois de fazer tudo isso, porque a estamos
‫usando para obter as direções de movimento.
‫Vou atualizar a velocidade da plataforma depois de definirmos a localização do ator.
‫Agora vamos voltar ao Unreal e clicar em compilar e ver se isso foi corrigido.
‫O problema com nossa plataforma se movendo para trás e para frente.
‫Vamos fechar este terminal e apertar o play.
‫E agora, se dermos uma olhada, a plataforma está se movendo rapidamente, mas está se movendo de forma confiável em torno do local
‫inicial e final, seria de esperar.
‫Então isso é tudo que eu queria abordar nesta palestra, o que está correto.
‫Um pequeno bug que pode ter surgido em algumas de nossas configurações de plataforma.
‫Vou ver no próximo.