NavMesh na Unity 3D \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 13 Horas 

 05 Min 

 36 Seg 

   Tempo restante da oferta: 13 05 36 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) NavMesh na Unity 3D  [ Desenvolvimento de Jogos ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-de-jogos) 

# NavMesh na Unity 3D

 Um assunto muito importante mas pouco discutido dentro do mundo dos desenvolvedores de jogos é a utilização do NavMash. Desmistificaremos isso nesse artigo.

 [ Redação Treinaweb ](https://www.treinaweb.com.br/blog/autor/redacao-treinaweb) 10 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/navmesh.jpg)  

Um assunto muito importante mas pouco discutido dentro do mundo dos desenvolvedores de jogos é a utilização do *NavMash*. O que é algo estranho, já que a não utilização dessa ferramenta pode desencadear uma porção incalculável de bugs que seriam uma vergonha para o resto da vida. Agora, você deve estar se perguntando sobre qual ferramenta é essa que estamos falando, né?

Vou explicar. Certamente você já deve ter jogado algum game onde um dos NPCs fica travado em algum lugar, porém, correndo como se estivesse competindo na São Silvestre.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj28.png)

Se você já assistiu o filme *Detona Ralph* sabe que essa cena faz uma piada com um bug, o que era comum na época mas que persiste até hoje que é o de um personagem ser barrado por uma parede ou qualquer outro objeto, mas mesmo assim continuar andando.

Esse bug já era tosco na época e continua sendo até hoje. Só que o mais estranho é que mesmo com o passar dos anos os desenvolvedores pensam mais em efeitos visuais do que em evitar coisas desse tipo. Não é difícil evitar uma bizarrice dessa, game engines atuais geralmente oferecem uma forma simples de se contornar esse problema.

Então, nesse artigo, veremos como evitar esse tipo de problema em uma das game engines mais conhecidas e usadas no mundo, a Unity.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/unitylogo.png)

Se você não conhece a **Unity**, aconselho que visite o seguinte site:

https://unity3d.com/pt

Dê uma olhada em tudo o que essa fantástica ferramenta pode te oferecer, e tenho certeza que vai adorar, depois faça o download e continue lendo.

Ah, claro, se tiver interesse, temos alguns cursos sobre essa maravilhosa engine no TreinaWeb:

[  ![Laravel - Testes Avançado](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/laravel.svg)   Curso Laravel - Testes Avançado Conhecer o curso ](https://www.treinaweb.com.br/curso/laravel-testes-avancado)

Com a Unity instalada, você vai ter a opção de criar um projeto. Selecione “Projetos 3D” e depois defina um nome e um local para salvá-lo.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/inicioproj.png)

Feito isso, nosso projeto será criado e teremos como resposta a seguinte imagem:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj2.png)

Veja que o projeto está vazio, tendo apenas alguns poucos objetos dentro de cena, como uma câmera e uma Luz. Então, para reproduzir um efeito *NavMesh* precisamos criar um pequeno cenário, onde podemos usar uma Plane como chão, alguns cubos como obstáculos e um cilindro para representar um personagem. Então, mãos à obra!

Primeiro, para criar uma plane para chão, é necessário ir no menu superior na opção **GameObject =&gt; 3D Object =&gt; Plane**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj3.png)

Feito isso, você vai ter uma plane adicionada à sua cena, como mostra a imagem abaixo:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj4.png)

Agora, para criar os cubos que vão servir de obstáculos, é preciso ir novamente ao menu superior em **GameObject =&gt; 3D Object =&gt; Cube**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj5.png)

Isso fará com que um cubo seja criado dentro da nossa cena, como mostra a imagem abaixo:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj6.png)

Repita esse processo algumas vezes para criar um número de obstáculos que deixe o exemplo mais interessante.

Veja que no meu caso criei 4 cubos.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj7.png)

Ok, até esse ponto tudo andando perfeitamente, mas a visualização da cena esta muito ruim, então vamos criar materiais para dar uma cor para o chão e para os cubos. Para fazer isso, basta ir na aba **Project**, clicar com o botão direito do mouse sobre a pasta **Assets** (àquela que é criada por padrão dentro da Unity).

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj8.png)

Clique com o botão direito sobre essa pasta e selecione a opção **Create =&gt; Material**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj9.png)

Isso vai criar um material padrão com a cor branca.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj10.png)

Veja que para esse material dei o nome de “Chão”, seguindo essa mesma lógica, vou criar mais um material com o nome de “obstáculo”.

**Veja:**

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj11.png)

Agora, basta mudar as cores de cada material e depois aplicar em cada objeto dentro da cena. Para mudar a cor do material é muito simples, clique na caixa de cor branca ao lado de Albedo.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj12.png)

Na caixa de seleção de cores escolha uma cor para o chão e depois repita esse processo para adicionar uma cor para o obstáculo.

Veja:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj13.png)

Agora, clique e arraste cada um desses materiais para seus devidos objetos em cena para que seja possível conseguir um resultado como o exibido na imagem abaixo:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj14.png)

Estamos com a nossa cena pronta. Vamos adicionar um caminho para ser percorrido. Para que isso seja feito é necessário antes de tudo determinar todos os objetos de cena como **estáticos**. Isso é feito selecionando cada um deles e deixando marcado a opção **Static**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj15.png)

Agora nos resta criar o caminho a ser percorrido pelo personagem. Esse caminho é criado com auxílio da janela **Navigation** que se não estiver em evidência pode ser adicionada à interface da Unity clicando em **Window =&gt; Navigation**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj16.png)

Prontinho! Agora essa janela estará disponível na Unity como podemos ver na imagem abaixo:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj17.png)

Para criar o caminho é muito simples, apenas clique em **Bake** e veja a mágica acontecer:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj18.png)

Veja que no chão da nossa cena foi criado um caminho em azul claro, isso significa que o personagem só vai andar sobre aquela região, sendo possível identificar os obstáculos e analisar as melhores rotas para chegar em um determinado local.

Agora, vamos criar um personagem para percorrer esse caminho. Crie um cilindro dentro dessa cena indo até o menu superior **GameObject =&gt; 3D Object =&gt; Cylinder**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj19.png)

Vamos posicionar esse cilindro na cena, como mostra a imagem abaixo:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj20.png)

Para que tenhamos efeitos físicos nesse objeto, precisamos adicionar a ele um componente chamado **RigidBody** que oferece características físicas ao cilindro, fazendo com que o mesmo sofra com a força da gravidade, por exemplo.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj21.png)

Agora vamos adicionar o **NavMeshAgen**. Esse componente pode ser adicionado ao cilindro indo até o menu superior em **Component =&gt; Navigation =&gt; NavMeshAgent**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj22.png)

Ele atribui ao cilindro algumas características como aceleração, velocidade entre outras que podemos notar na imagem abaixo:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj23.png)

Maravilha! Agora sim fechamos a etapa de construção do NavMesh de sua forma visual. Para finalizar, vamos criar um código para fazer com que tudo isso ganhe vida.

Para criar o código é necessário ir na aba **Project** dentro da pasta **Assets** e criar um arquivo de código **C#** ou **JS**, no meu caso vou criar um C# veja:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj24.png)

Veja que para criar um arquivo de código é muito simples, basta clicar com o botão direito sobre a pasta **Assets**, depois em **Create** e por fim escolhemos o tipo de código que o arquivo deve ter. Com o arquivo criado, podemos dar um nome para ele, no meu caso o chamei de **NavScript**.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj25.png)

Clique duas vezes sobre ele para abri-lo e escreva o seguinte código:

```csharp
using UnityEngine;
using System.Collections;

public class NavScript : MonoBehaviour {
    private NavMeshAgent Agent;
    public Transform Alvo;

    void Start () {
        Agent = GetComponent ();
    }

    // Update is called once per frame
    void Update () {
        Agent.SetDestination (Alvo.position);
    }
}

```

Veja que a primeira coisa que fiz foi criar dois atributos onde um pega o **NavMeshAgent** e o outro pega o **alvo** que será o local onde o cilindro precisa chegar.

```csharp
private NavMeshAgent Agent;
public Transform Alvo;

```

Depois em **Start()** é necessário pegar o componente do **NavMeshAgent** com a seguinte linha de código:

```csharp
Agent = GetComponent ();

```

E por fim, em **Update()**, vamos adicionar o código que faz com que o cilindro se movimente até chegar no alvo.

```csharp
Agent.SetDestination (Alvo.position);

```

Nesse momento, você deve estar um pouco confuso, não? Afinal, não falamos de nenhum alvo na construção da nossa cena, né? Mas, tudo bem, isso será criado agora!

Dentro da cena vamos criar um cubo que será o alvo. Veja:

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj26.png)

Aí está! Esse cubo é o alvo do nosso cilindro. Agora vamos adicionar o código que criamos ao cilindro. Para fazer isso, basta “arrastar” o código sobre o cilindro. Depois disso, com o cilindro selecionado, vamos adicionar ao campo de alvo o cubo que acabamos de criar, também arrastando o cubo até o local apresentado na imagem abaixo.

![](https://d2m498l008ebpa.cloudfront.net/2016/11/proj27.png)

Pronto! Agora é só executar o exemplo e ver tudo funcionando. Espero que tenham gostado dessa dica *Gamer*. =)

Até a próxima!

[  ![Unity - Criação de Jogos 2D](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/unity-5.svg)   Curso Unity - Criação de Jogos 2D Conhecer o curso ](https://www.treinaweb.com.br/curso/desenvolvimento-de-jogos-2d-com-unity)

- [ #Games ](https://www.treinaweb.com.br/blog/tag/games)
- [ #Unity ](https://www.treinaweb.com.br/blog/tag/unity)
- [ #3D ](https://www.treinaweb.com.br/blog/tag/3d)

Autor

 ![Redação Treinaweb](//secure.gravatar.com/avatar/662942287935c97e547cfc12c04be6e5?d=mm)

## Redação Treinaweb

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/redacao-treinaweb)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/03/25165946/GOOGLE-STADIA-400x280.png)  [ Tecnologia ](https://www.treinaweb.com.br/blog/categoria/tecnologia) 

     8 anos atrás

    ##  [ Stadia: Plataforma de Games por Streaming da Google ](https://www.treinaweb.com.br/blog/stadia-plataforma-de-games-por-streaming-da-google) 

     Quer jogar aquele jogo novo, mas não tem hardware para isso? Bom, segundo a Google, esses dias estão contados.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/02/21162610/capa-400x280.jpg)  [ Desenvolvimento de Jogos ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-de-jogos) 

     9 anos atrás

    ##  [ Como se tornar um desenvolvedor de games? ](https://www.treinaweb.com.br/blog/como-se-tornar-um-desenvolvedor-de-games) 

     Veja nesse artigo como dar o primeiro passo na sua carreira de desenvolvimento de games.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/5-bons-motivos-para-estudar-javascript-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     6 anos atrás

    ##  [ 5 bons motivos para estudar JavaScript ](https://www.treinaweb.com.br/blog/5-bons-motivos-para-estudar-javascript) 

     O JavaScript é uma linguagem que está praticamente em todos os lugares por causa de sua flexibilidade e adaptabilidade à diversos ambientes. Vamos conferir nesse artigo 5 bons motivos para você estudar essa linguagem.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/PROFISSIONAL-TESTES-400x280.png)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     6 anos atrás

    ##  [ Como é o dia a dia de um profissional de teste? ](https://www.treinaweb.com.br/blog/como-e-o-dia-a-dia-de-um-profissional-de-teste) 

     O conhecimento técnico e a visão de negócio deste profissional também lhe permite colaborar no desenvolvimento do software. Saiba mais neste artigo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/03/29143535/TW-ENTREVISTAS-CAIO-RIBEIRO-400x280.png)  [ Entrevistas ](https://www.treinaweb.com.br/blog/categoria/entrevistas) 

     9 anos atrás

    ##  [ TW Entrevista 04: Caio Ribeiro ](https://www.treinaweb.com.br/blog/tw-entrevista-04-caio-ribeiro) 

     Fizemos uma série de entrevistas com desenvolvedores chamada "TW Entrevista". O entrevistado de hoje é o Caio Ribeiro, empreendedor e autor de livros de Node.js e MongoDB.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/04/05114857/ORLEANS-400x280.png)  [ Infraestrutura e Sistemas Operacionais ](https://www.treinaweb.com.br/blog/categoria/infraestrutura-e-sistemas-operacionais) 

     9 anos atrás

    ##  [ Conhecendo o Microsoft Orleans ](https://www.treinaweb.com.br/blog/conhecendo-o-microsoft-orleans) 

     Conheça o framework Microsoft Orleans e veja como ele tenta resolver o "problema" dos sistemas distribuídos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/oportunidades-TI-min-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     4 anos atrás

    ##  [ Como aumentar suas oportunidades na área de TI ](https://www.treinaweb.com.br/blog/como-aumentar-suas-oportunidades-na-area-de-ti) 

     Veremos neste artigo algumas dicas que você pode colocar em prática para criar suas próprias oportunidades na área de TI.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/03/29143624/TW-ENTREVISTAS-CAIO-GONDIM-400x280.png)  [ Entrevistas ](https://www.treinaweb.com.br/blog/categoria/entrevistas) 

     9 anos atrás

    ##  [ TW Entrevista 05: Caio Gondim ](https://www.treinaweb.com.br/blog/tw-entrevista-05-caio-gondim) 

     Fizemos uma série de entrevistas com desenvolvedores chamada "TW Entrevista". O entrevistado de hoje é o Caio Gondim, engenheiro de software com passagem pela Globo.com e atualmente no The New York Times.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/03/28132543/img-hanashiro_1024-400x280.png)  [ CMS's e E-commerce ](https://www.treinaweb.com.br/blog/categoria/cmss-e-e-commerce) 

     9 anos atrás

    ##  [ Geradores de sites / blogs estáticos - o que são e por que usá-los? ](https://www.treinaweb.com.br/blog/geradores-de-sites-blogs-estaticos-o-que-sao-e-por-que-usa-los) 

     Aprenda o que são geradores de sites estáticos e quando usá-los em seus projetos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/01/17123855/IMG-MARYLENE-3-1-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     9 anos atrás

    ##  [ Qual linguagem devo aprender primeiro? ](https://www.treinaweb.com.br/blog/qual-linguagem-devo-aprender-primeiro) 

     Há muitas dúvidas sobre qual o primeiro passo para se iniciar na carreira de desenvolvedor. Veja nesse artigo algumas dicas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/01/17113117/IMG-MARYLENE-1-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     9 anos atrás

    ##  [ 5 linguagens de programação promissoras para se estudar em 2018 ](https://www.treinaweb.com.br/blog/5-linguagens-de-programacao-promissoras-para-se-estudar-em-2018) 

     Cinco linguagens de programação de muito potencial no mercado de trabalho em 2018.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/11/30154906/TOP-5-1-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     9 anos atrás

    ##  [ Top 5 das linguagens de programação mais populares de 2017 ](https://www.treinaweb.com.br/blog/top-5-das-linguagens-de-programacao-mais-populares-de-2017) 

     O ano está acabando e você, sabe quais foram as linguagens de programação mais utilizadas / populares neste ano?

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **13h 05min 36s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
