Este é Stevie.
Ela está aqui para demonstrar como é importante a compreensão dos vetores para a programação do movimento nos jogos.
Quer você queira mover um NPC ou virar um personagem, é essencial para garantir que
seu jogo se comporte da maneira que você pretende.
Um personagem 3D tem dois espaços vetoriais, um que é local e outro que é o mundo.
Cada espaço é definido pelos Eixos X, Y e Z.
Às vezes estes espaços se alinham, mas na maioria das vezes não o fazem.
Por exemplo, como mostrado aqui, o eixo Z local de Stevie está apontando em uma direção diferente para o mundo.
Z.
Em unidade, a orientação espacial mundial é representada por um pequeno sistema de eixos na parte superior direita
da janela da cena.
Para ver um modelo 3D de eixos locais, você pode selecionar o personagem e pressionar a tecla W para revelar os eixos
X, Y e Z.
Um modelo não estará alinhado com o mundo se tiver qualquer outro valor que não seja zero.
Como seu movimento de rotação em qualquer espaço pode ser definido por um vetor, eles são representados por uma seta que
tem uma direção e um comprimento chamado de magnitude.
A direção é especificada pelo número de etapas em X, Y e Z.
O vetor cobre, por exemplo, em 2D.
Este vetor cobre três etapas no X e duas etapas no Y, e, portanto, é representado pela
direção.
Três para sua magnitude é calculado usando o teorema de Pitágoras.
Isto toma a raiz quadrada da adição das duas coordenadas ao quadrado ou a raiz quadrada de x ao quadrado
mais y ao quadrado.
Neste caso, essa seria a raiz quadrada de três quadrados mais dois quadrados, o que resulta em 3. 6.
Podemos então dizer que o vetor três dois tem uma magnitude de 3. 6.
Um vetor em três dimensões tem exatamente as mesmas propriedades com a adição do valor do eixo z.
Portanto, é representado pelos passos em x, y e Z.
Este vetor seria de um a um.
Sua magnitude seria a raiz quadrada de quatro ao quadrado mais um ao quadrado mais dois ao quadrado ou 4. 6.
Um vetor não tem posição inicial definida.
Ela simplesmente representa uma direção.
O mesmo vetor pode aparecer em qualquer lugar.
Isto os torna úteis para especificar o movimento de um personagem de jogo.
Adicionando um vetor à posição do personagem de jogo, eles serão movidos para um novo local.
Cada um dos valores X, Y e Z são adicionados à posição atual do personagem em unidade.
Podemos fazer isso com uma declaração de tradução.
É elementar realizar esta operação em sua cabeça onde a nova posição é a posição inicial
mais o vetor.
Quando um vetor é adicionado a uma posição, o resultado é uma nova posição onde os valores X foram adicionados, os
valores Y foram adicionados, e os valores Z foram adicionados.
Se o mesmo vetor for adicionado a dois caracteres diferentes em locais diferentes, cada um se moverá exatamente pela mesma
quantidade, no entanto.
Note que eles não irão parar no mesmo local.
Eles estão simplesmente acrescentando os mesmos passos às posições x, y e z.
E como eles começam em uma posição diferente, o resultado de adicionar o mesmo vetor será diferente.
Entretanto, como os vetores utilizados são exatamente os mesmos, os caracteres se moverão em paralelo.
Muitas vezes, ao projetar um NPC, você vai querer que o personagem se mude para um local de objetivo.
Até mesmo a vadiagem aparentemente aleatória ainda requer algum ponto no mundo para que o personagem vise.
Isto requer o cálculo do vetor entre o personagem e seu alvo.
O vencedor é encontrado retirando a posição do personagem da posição alvo.
Uma vez que você tenha o vetor, você pode usá-lo para mover seu personagem em direção ao seu alvo.
Se você quiser que um personagem se mova pouco a pouco ao longo de um vetor, então você não pode adicionar o vetor
inteiro de uma só vez.
Você precisa adicionar um vetor muito mais curto que aponta na mesma direção e adicioná-lo a cada laço de atualização
para dar a aparência de movimento para encontrar um vetor que é mais curto que um determinado vetor mas aponta na
mesma direção, nós o dividimos por algum valor.
Por exemplo, se você quiser um vetor, há metade do tamanho do original, então você o dividiria
por dois.
Este novo vetor é coordenado pelo X, Y e Z do original.
Tudo dividido por dois.
E embora as coordenadas do vetor mudem, ele ainda está voltado para a mesma direção.
Mas quanto você deve dividir um vetor para o movimento de um personagem?
Se você dividisse o vetor por quatro e adicionasse o vetor menor a cada atualização, o personagem precisaria de quatro atualizações
para atingir seu objetivo.
Aqui está Stevie experimentando alguns divisores diferentes para seu vetor de objetivos.
Você notará que quanto menor a divisória, menos atualização Stevie levará para chegar até a vovó.
Além disso, isto a faz andar muito mais rápido.
À medida que as divisórias aumentam, o movimento se torna mais fluido e ela cobre a distância em um tempo maior.
Se você dividir um vetor alvo por um número fixo cada vez, então a velocidade do MPC mudará dependendo
da distância.
Neste caso, você pode ver que dividindo ambos os cenários por dez dará vetores menores, mas o vetor menor
na distância maior será maior do que os vetores menores na distância menor.
Aqui está Stevie colocando isto em prática.
Em ambos os exemplos, o vetor de direcionamento é dividido por mil.
Isto dá a Stevie 1000 atualizações para chegar ao seu objetivo, pois ela tem uma longa distância a percorrer no mesmo
número de laços no fundo.
No fundo, ela se moverá muito mais rápido.
Assim, em vez de dividir todos os vetores-alvo pelo mesmo valor, queremos reduzir os vetores menores
a um tamanho padrão, de modo que todos tenham o mesmo comprimento.
E este tamanho padrão é um deles.
Podemos encontrar um comprimento, um vetor apontando na mesma direção que um vetor maior, dividindo
o vetor maior por sua magnitude.
Este processo é chamado de normalização.
Quando Stevie usa o vetor normalizado para atualizar seu movimento, não importa o quanto ela tenha que viajar,
ela se moverá com uma velocidade constante.
A unidade torna simples o trabalho com pontos e vetores através de seu vetor três.
O Vetor Classe A três tem um valor X, Y e z que representa as coordenadas dos vetores.
Se você está familiarizado com a unidade, então você já estará usando propriedades do vetor três, já que
a transformação para objetos de jogo usa o vetor três para os dados de posição e escala.
Você pode trabalhar o vetor de um personagem para um objetivo, diminuindo um do outro.
Isto resultará em um vetor.
É fácil encontrar o comprimento deste vetor usando a propriedade de magnitude para obter a versão normalizada que
você simplesmente usa.
Os vetores normalizados são um conceito extremamente poderoso e há muito o que aprender.
Mas agora que você tem algumas dicas para usar o cinto para mover melhor um personagem, começamos
a fazer alguns exercícios práticos.