Como programar a Ai do meu jogo usando pontos?

Eu estou fazendo um jogo onde o protagonista é um gato, nesse jogo terá um rato que será um agente inteligente, o rato terá algumas funções para realizar, como : pegar objetos, leva-los até a toca, se esconder do player em locais pré-determinados e fugir do player, caso não haja esconderijos próximos, eu tentei usar o NavMash, porém, não consegui fazer ele fugir do player, apenas pegar os itens e leva-los até a toca.

Depois de pensar em como fazer isso, chegar na conclusão que se eu programar um algoritmo que faz o rato se movimentar entre pontos pré-determinados talvez eu consiga fazer tudo que eu precise, e aprender no processo.

Qualquer dica de documentação, vídeos ou outros materiais para estudar sobre são bem vindos

Caso alguém tenha alguma outra sugestão de como fazer ficarei grato.

Um maneira que eu pensei dele fugir do player é usando o método Vector3.Distance(), ele mede a distância entre dois vetores e retorna um float:
public Transform player;
public transform rato;

float distancia = Vector3.Distance(player.transform.position, rato.transform.position);

Caso a distância entre o player e o rato seja menor que o valor especificado e não tenha esconderijos próximos ele vai começar a fugir através dos pontos aleatórios pelo mapa, da pra usar o método SetDestination(PontoAleatorio.Position) do navMesh. Mas só isso não é o suficiente, vão surgir alguns problemas, mas ai tem que ir ajustando o script conforme o que tu queira.

1 curtida