Solucionado (ver solução)
Solucionado
(ver solução)
12
respostas

Os inimigos não estão semovento corretamente!

Estou com um problema com os meus inimigos ele estão movendo lenta mente é batendo um as outros com se fosse bolas batendo umas entre outras.

Lenbrando que eu tirei "Use Gravity" do inimigo no Rigidbody.

Aqui o meu scripty do inimigos:

public class Inimigo : MonoBehaviour {

    [SerializeField] private int vida;  // SerializeField serve para a interface unity

    // 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);
    }

    public void RecebeDano (int pontosDeDano){

         vida -= pontosDeDano;

         if(vida <= 0){
            Destroy (this.gameObject);
         }
    }
}

Scripty GeradorDelnimigos:

public class GeradorDeInimigos : MonoBehaviour {

    [SerializeField] private GameObject inimigo;

    private float tempoDeCriacao = 2f;
    private float ultimaGeracao;

    // Update is called once per frame
    void Update () {
        GeraInimigo ();
    }

    private void GeraInimigo(){

        float tempoAtual = Time.time;

        if (tempoAtual > ultimaGeracao + tempoDeCriacao){

            ultimaGeracao = tempoAtual;
            Vector3 posicaoDoGerador = this.transform.position;
            Instantiate (inimigo, posicaoDoGerador, Quaternion.identity);

        }

    }
}
12 respostas

Oi Guilherme, tudo bom? Voce chegou a colocar o rigidbody como kinematic?

Bom dia,

Você ta falando sobre Rigidbody do Inimigo?

sim ja testei a o opção is kinematic e não deu em nada

Vc consegue mandar um print de como estão os componentes dos inimigos? Se preferir manda um link do git com projeto.

Vou mandar as imagens : https://pasteboard.co/H4Kz4bC.png, https://pasteboard.co/H4KAu2d.png

Isto começou tepois do 2 videos da aula 5

Então o erro começou depois de você colocar o rigidbody?

acho que sim, mais mesmo que eu ja removi componente Rigidbody a unica coisa que muda e o inimigo é que ele fica parado e não se move

solução!

Eu descobrir o problema era que o fimdocaminho estava altura acima de zero, e isso que calsava o erro, porque no script esta espeficando que e para inimigo achar fimdocaminho pelo Vector3 que é Y.

Eu também testei outro Vector2 ele só se movimenta se vector do fimdocaminho estiver zerado.

Tem como outro jeito de fazer o inimigo se movimentar?

É legal utilizar o navmesh para movimentar os personagens, pq ele calcula os obstáculos e faz o personagem achar um caminho "livre" até o lugar que vc quer.

O que você pode fazer é:

Na hora de colocar um destino pro seu inimigo, ao invés de colocar "destino = fimdocaminho.position", coloque "destino = new Vector3(fimdocaminho.x, this.transform.position.y, fimdocaminho.z);"

Assim você ignora a altura do objeto fim do caminho.

Esta dando Erro:

Assets/Scripts/Inimigo.cs(13,60): error CS1061: Type `UnityEngine.GameObject' does not contain a definition for `x' and no extension method `x' of type `UnityEngine.GameObject' could be found. Are you missing an assembly reference?
Assets/Scripts/Inimigo.cs(13,103): error CS1061: Type `UnityEngine.GameObject' does not contain a definition for `z' and no extension method `z' of type `UnityEngine.GameObject' could be found. Are you missing an assembly reference?

Voce está usando um GameObject como se fosse um transform. Coloca algo do tipo: fimdocaminho.transform.position.x e fimdocaminho.transform.position.z

valeu deu certo

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software