Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Jogos Digitais / Inteligência Artificial para Jogos / Aula
Imagine que um personagem do seu jogo se encontra na posição (0, 0) do cenário com velocidade definida pelo vetor (1, 1). O personagem tem como objetivo ir para a posição (6, 6). Considerando que o limite máximo de força de navegação é de 1 unidade e o de velocidade é de 2 unidades, em que posição o personagem se encontrará no próximo frame se você aplicar os comportamentos de navegação Seek?
Para verificar a resposta, clique aqui.
Apesar de, no jogo, não ser você quem irá fazer os cálculos aqui propostos (eles serão feitos pelo computador), o intuito desta atividade é de você acompanhar o raciocínio por trás dos cálculos. Os dados que temos é que posição=(0;0) e alvo=(6;6). Seguindo, então, as fórmulas apresentadas, temos:
velocidadedesejada=alvo−posição
velocidadedesejada=(6;6)−(0;0)=(6;6)
||velocidadedesejada||=||(6;6)||=(1√2;1√2)
velocidademáxima×||velocidadedesejada||=2×(1√2;1√2)=(√2;√2)
forçanavegação=velocidadedesejada−velocidade=(√2;√2)−(1;1)=(√2−1;√2−1)
Como ||forçanavegação||<forçamáxima, ou seja que (√2−1;√2−1)<1, então forçanavegação não será alterada (ou seja, truncada no valor máximo). Assim... velocidadenova=velocidadeatual+forçanavegação=(1;1)+(√2−1;√2−1)=(√2;√2)
Como ||velocidadenova||<velocidademáxima,ou seja, que (√2;√2)<2, não precisamos truncá-la. Assim, a nova posição é calculada a partir dessa nova velocidade. posiçãonova=(0;0)+(√2;√2)=(√2;√2)
A posição do personagem no próximo frame é, portanto, (√2;√2).
Versão 5.3 - Todos os Direitos reservados