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

jogo roda e depois de alguns segundos ele para

e aparece esse erro: NullReferenceException: Object reference not set to an instance of an object MovimentoPersonagens.Rotacionar (UnityEngine.Vector3 direcao) (at Assets/scripts/MovimentoPersonagens.cs:24) ControlaZumbi.FixedUpdate () (at Assets/scripts/ControlaZumbi.cs:28)

5 respostas

Oi, Miguel, talvez a variável MovimentoPersonagens não esteja preenchida, os scripts que estão dando erro aqui?

public GameObject jogador; public float Velocidade = 5; private MovimentoPersonagens meuMovimentoPersonagem;

// Use this for inicialization
void Start()
{
    jogador = GameObject.FindWithTag("jogador");
    int geraTipoZumbi = Random.Range(1, 28);
    transform.GetChild(geraTipoZumbi).gameObject.SetActive(true);
    meuMovimentoPersonagem = GetComponent<MovimentoPersonagens>();
}



void FixedUpdate()
{
    float distancia = Vector3.Distance(transform.position, jogador.transform.position);

    Vector3 direcao = jogador.transform.position - transform.position;

    meuMovimentoPersonagem.Rotacionar(direcao);

    if (distancia > 2.5)
    {
        meuMovimentoPersonagem.Movimentar(direcao, Velocidade);

        GetComponent<Animator>().SetBool("Atacando", false);
    }
    else
    {
        GetComponent<Animator>().SetBool("Atacando", true);
    }
}
void AtacaJogador()
{
    int dano = Random .Range(20, 30);
    jogador.GetComponent<ControlaJogador>().TomarDano(dano);
    
    
}

}

MOVIMENTO PERSONAGENS

public class MovimentoPersonagens : MonoBehaviour { private Rigidbody meuRigidbody;

void awake()
{
    meuRigidbody = GetComponent<Rigidbody>();
}

public void Movimentar(Vector3 direcao, float velocidade)
{ 
  meuRigidbody.MovePosition(meuRigidbody.position + direcao.normalized * velocidade * Time.deltaTime);
  
  
}

public void Rotacionar (Vector3 direcao)
{
    Quaternion novaRotacao = Quaternion.LookRotation(direcao);
    meuRigidbody.MoveRotation(novaRotacao);
 }

}

solução!

Parece ser o Awake do MovimentoPersonagens que parece estar minusculo então nunca rotando pra ser usado.

aparrece isso agr professor: NullReferenceException: Object reference not set to an instance of an object MovimentoPersonagens.Rotacionar (UnityEngine.Vector3 direcao) (at Assets/scripts/MovimentoPersonagens.cs:24) ControlaZumbi.FixedUpdate () (at Assets/scripts/ControlaZumbi.cs:28)

Confere se o inimigo além do script de controlar tem o MovimentoPersonagens nele também.

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