Navmesh é uma ferramenta da Unity que mapeia obstáculos em um cenário e com isso podemos fazer uma IA que vai encontrar o menor caminho do ponto A ao B.
Podemos montar diversas coisas com isso, como sistemas de trânsito ou NPC´s em um jogo FPS.
Nesse artigo vamos mostrar as principais ferramentas desse sistema:
- Como criar um mapa
- Como configurar o mapa
- Como usar o NavMeshAgent
- Como mover um objeto pelo mapa
Como criar um mapa
O Navmseh cria sempre um mapa Baked, isto é, ele é um mapa calculado previamente no jogo e não pode ser alterado durante a gameplay.
É importante dizer que somente objetos com a opção Static vão entrar no cálculo do mapa.
Depois de marcar todos os objetos desejados como Static, vamos abrir a janela do NavMesh.
Para isso vamos em Window > AI > NAvigation.
Podemos ir na aba Bake e clicar em bake.
Toda parte azul são os lugares “andáveis” do mapa
Como configurar o mapa
Na aba bake você vai ver que existem várias configurações como:
- Agent Radius – Quanto maior esse valor, mais longe da borda vai ser criado o mapa
- Agent Height – Essa aqui é a altura máxima que os objetos poderão passar
- Max Slope – Essa aqui é a maior inclinação onde um mapa vai ser criado
- Step Height – Esse aqui é o maior “degrau” que um objeto pode pular
Como usar o NavMeshAgent
O NavhMeshAgent é um componente usado nos objetos para que ele possa ser usado por um script.
Para adicionar, entre em um objeto e na aba inspector procure por Add Component e procure por NavhMeshAgent.
Como mover um objeto pelo mapa
Para mover um objeto pelo mapa vamos criar um script e dentro dele colocaremos um código simples:
using UnityEngine; using UnityEngine.AI; [RequireComponent(typeof(NavMeshAgent))] public class FollowTarget : MonoBehaviour { public Transform target; Vector3 destination; NavMeshAgent agent; void Start() { // Cache agent component and destination agent = GetComponent<NavMeshAgent>(); destination = agent.destination; } void Update() { // Update destination if the target moves one unit if (Vector3.Distance(destination, target.position) > 1.0f) { destination = target.position; agent.destination = destination; } } }
Use a sua criatividade
O NavMesh pode ser usado para inúmeras funcionalidades e você pode se aprofundar nesse assunto na biblioteca da Unity.
Existem muitas outras funções que vão te ajudar a criar muitas coisas.
O principal desse sistema é usar para uma inteligência artifical andar sozinha pelo mapa desviando de obstáculos.
Você pode usar a sua criatividade para criar o que quiser.
Quer aprender desenvolvimento de jogos?
Siga o nosso blog: www.crieseusjogos.com.br
Temos vídeos toda semana em nosso canal do Youtube: Crie seus jogos – Youtube
E também baixe gratuitamente: os passos para desenvolver jogos de sucesso
Seja o primeiro a comentar.