5
respostas

o NavMeshAgent nao funciona

public class inimigo : MonoBehaviour {

// Use this for initialization void Start () { //esse ele da como errado->NavMeshAgent Agente = GetComponent (); GameObject FimDoCaminho = GameObject.Find ("FimDoCaminho"); Vector3 PosicaoFimDoCaminho = FimDoCaminho.transform.position; //esse ele da como errado-> Agente.SetDestination(PosicaoFimDoCaminho); } }

5 respostas

Olá Gustavo!

Qual a mensagem de erro que o Unity está apresentando nessas linhas?

Aproveitando, verifica se no início do seu script você está importando o namespace onde se encontra a classe NavMeshAgent. Você deve ter uma linha assim:

using UnityEngine.AI;

// resto do script

"SetDestination" can only be called on an active agent that has been placed on a NavMesh. UnityEngine.AI.NavMeshAgent:SetDestination(Vector3) Inimigo:Start() (at Assets/Script/Inimigo.cs:14)

Para mim Estou tendo este erro ai ... sendo que meu código ficou assim:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class Inimigo : MonoBehaviour {


    // Use this for initialization
    void Start () {
        UnityEngine.AI.NavMeshAgent agente = GetComponent<UnityEngine.AI.NavMeshAgent>();
        GameObject fimDoCaminho = GameObject.Find ("FimDoCaminho");
        Vector3 posicaoDoFimDoCaminho = fimDoCaminho.transform.position;
        agente.SetDestination (posicaoDoFimDoCaminho);
    }

    // Update is called once per frame
    void Update () {

    }
}

Consegui resolver o meu no caso era pq não tava com o terreno selecionado na hora de fazer o Bake do NavMesh

Henrique no seu código tá faltando colocar dentro do GetComponent(); No caso o seu Falta o ""

No Unity 2017 o NavMeshAgent mudou de lugar, então para importar ele adequadamente é preciso colocar o

using UnityEngine.AI;

no topo do script, senão não encontra.