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

NullReference - Diferente do outro do amigo abaixo

Conferi o codigo inumeras vezes, mas quando eu tento refatorar ele nao aceita a chamada de metodo, se eu volto para o antigo funciona.

para me certificar que não estava declarando algo errado estou utilizando as mesmas variaveis em ambos os modos e só funciona no antigo.

private void FixedUpdate() { float distance = Vector3.Distance(transform.position, Player.transform.position);

    Vector3 direction = Player.transform.position - transform.position;

    if (distance > 2.5)
    {
        movimentation.Moviment(direction, speed);
        //rigB.MovePosition(rigB.position + direction.normalized * Speed * Time.deltaTime);
        anim.SetBool("Attacking", false); [...]

aqui no scrit novo

public void Moviment(Vector3 mov, float generalSpeed) { rigB.MovePosition(rigB.position + mov.normalized * generalSpeed * Time.deltaTime); }

11 respostas

Oi, Igor, tudo bem?

Vai até o console (ctrl + shift + c para abrir) e cola o erro completo aqui, assim a gente consegue pegar qual variável está tendo esse problema.

Desculpe acabei pulando etapas no report do meu problema, particilarmente achei que nem ia ser respondido, visto que outras perguntas minhas no forum nunca foram respondidas haha

Vamos ao assunto...

NullReferenceException: Object reference not set to an instance of an object MovimentControl.Moviment (UnityEngine.Vector3 mov, System.Single generalSpeed) (at Assets/Script/MovimentControl.cs:15) EnemyControl.FixedUpdate () (at Assets/Script/EnemyControl.cs:33)

este é o erro, as linhas referenciados são as que estão corpo da pergunta... entendi a stacktrail do problema mas não achei incorreção alguma.

Só um adento, o mesmo erro da em todas as refaturações propostas não somente na de posição.

Blz, cola o script todo por aqui pra saber certinho qual a linha 33 e olhar o Start como está também :)

Estão em comentarios pois estou mantendo meu codigo funcionando para continuar o curso... mas são esses mesmo...

public GameObject Player;
    public float speed = 5;
    private Animator anim;
    private Rigidbody rigB;
    //private MovimentControl movimentation;

    // Start is called before the first frame update
    void Start()
    {
        Player = GameObject.FindGameObjectWithTag("Player");
        int typeGenerator = Random.Range(1, 28);
        transform.GetChild(typeGenerator).gameObject.SetActive(true);
        anim = GetComponent<Animator>();
        //movimentation = GetComponent<MovimentControl>();
        rigB = GetComponent<Rigidbody>();

    }

    private void FixedUpdate()
    {        
        float distance = Vector3.Distance(transform.position, Player.transform.position);

        Vector3 direction = Player.transform.position - transform.position;

        if (distance > 2.5)
        {
            //movimentation.Moviment(direction, speed);
            rigB.MovePosition(rigB.position + direction.normalized * speed * Time.deltaTime);
            anim.SetBool("Attacking", false);
            //movimentation.GlobalAnimator(false);
        }
        else
        {
            anim.SetBool("Attacking", true);
            //movimentation.GlobalAnimator(true);
        }

        Quaternion newRotacao = Quaternion.LookRotation(direction);
        rigB.MoveRotation(newRotacao);
        //movimentation.Rotation(direction);
    }

    void AttackPJ ()
    {     
        int damage = Random.Range(10, 15);
        Player.GetComponent<PJ>().GetDamage(damage);
    }
}`

Não parece ter nada de errado com esse, faz o seguinte, monta um .zip da parta toda do seu projeto e sobe num Google Drive, Dropbox, ou outra coisa que seja publica e cola o link aqui. Pode ser?

Aí eu consigo olhar o projeto como um todo até os itens no inspector.

tem algumas coisas diferentes do que nas aulas espero que nao se importe, e aceito feedbacks sobre a montagem do mapa tambem... aproveitando que voce ira olhar poderia verificar para mim por favor o por que de algumas texturas nao estarem se encaixando bem, bem na saida dos hoteis... vou te explorar um pouco hahaha ja estou para enviar um mim

https://drive.google.com/drive/folders/1bW_HQdK6flkpEE_mFihyWic-hKComNh5?usp=sharing

O zippado já esta disponivel, o discorrido esta terminando de uppar

solução!

Oi, Igor, to baixando aqui mas acho que peguei o problema. Veja se isso resolve:

No script de MovimentControl o método pra Awaken para Awake.

Esses métodos com comportamento definido da Unity tem que ter o nome certinho pra ele executar. O que deve estar acontecendo é que o MovimentControl não inicia os objetos e aí na hora do script do Inimigo usar os GetComponents não rodaram e bugam.

100% funcionando... Obrigado pelo auxilio.

Só para finalizar conseguiu dar uma conferida naquele pequeno problema com a textura no mapa ?? Chegou a conferir o projeto tem algum feedback na montagem do mapa ?

Se nao tiver nao tem problema, entendo a correria do seu trabalho e ja me auxiliou bastante...

Obrigado.

Puts nem cheguei a abrir, mas pode abrir um segundo tópico explicando o problema e colocar o link do projeto que dou uma olhada com prazer :)