Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Problema com o código

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Gerador : MonoBehaviour
{
    [SerializeField]
    private Transform alvo;
    [SerializeField]
    private GameObject prefabInimigo;
    [SerializeField]
    private float tempo;
    [SerializeField]
    private float raio;

    private void Start()
    {
        StartCoroutine(this.IniciarGeracao());
    }

    private IEnumerator IniciarGeracao()
    {
        while (true)
        {
            yield return new WaitForSeconds(this.tempo);
            this.Instanciar();
        }
    }

    private void Instanciar()
    {
        var inimigo = GameObject.Instantiate(this.prefabInimigo);
        this.DefinirPosicaoInimigo(inimigo);
        inimigo.GetComponent<Seguir>().SetAlvo(this.alvo);
    }

    private void DefinirPosicaoInimigo(GameObject inimigo)
    {
        var posicaoAleatoria = Random.insideUnitCircle * this.raio;

        var posicaoInimigo = (Vector2)this.transform.position + posicaoAleatoria;
        inimigo.transform.position = posicaoInimigo;
    }
}

A unity acusa um erro NullReference na seguinte linha inimigo.GetComponent().SetAlvo(this.alvo); Dizendo assim: NullReferenceException: Object reference not set to an instance of an object Gerador.Instanciar () (at Assets/Scritpt/Gameplay/Gerador.cs:33) Gerador+c__Iterator0.MoveNext () (at Assets/Scritpt/Gameplay/Gerador.cs:25) UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

1 resposta

Oi Matheus, tudo bom?

pelo erro me parece que vc esqueceu de adicionar o componente Seguir no prefab do inimigo. Vc já chegou a verificar isso?