0
respostas

podem me ajudar por favor

a Unity diz que Referência de objeto não definida para uma instância de um objeto impulso.OnCollisionEnter2D

codigo do "Avião":

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

public class impulso : MonoBehaviour { public float velociadade; private Rigidbody2D fisica; public float forca; private Vector3 posicaoInicial;

private Diretor diretor;
private void Awake()
{
    this.posicaoInicial = this.transform.position;
    this.fisica = this.GetComponent<Rigidbody2D>();

}
private void Star()
{
    this.diretor = GameObject.FindObjectOfType<Diretor>();
}

private void Update() { if(Input.GetButtonDown("Fire1")) { this.Impulsionar(); }

    Move();


}

public void Reiniciar()
{
    this.transform.position = this.posicaoInicial;
    this.fisica.simulated = true;
}

private void Impulsionar()
{
    this.fisica.velocity = Vector2.zero;
    this.fisica.AddForce(Vector2.up * forca, ForceMode2D.Impulse);

}

void Move ()
{
    Vector3 movimento = new Vector3(Input.GetAxis("Horizontal"), 0f, 0f);
    transform.position += movimento * Time.deltaTime * velociadade;
}

private void OnCollisionEnter2D (Collision2D colisao)
{
    this.fisica.simulated = false;
    this.diretor.FinalizarJogo();
}

}

codigo do Diretor:

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

public class Diretor : MonoBehaviour { private impulso Impulso; [SerializeField] private GameObject FundoGameOver;

private void Start() 
{
    this.Impulso = GameObject.FindObjectOfType<impulso>();
}
public void FinalizarJogo()

{ Time.timeScale = 0; this.FundoGameOver.SetActive(true); }

public void ReiniciarJogo()
{
    this.FundoGameOver.SetActive(false);
    Time.timeScale = 1;
    this.Impulso.Reiniciar();
    this.DestruirObstaculos();
}

private void DestruirObstaculos()
{
    obstaculo [] obstaculos = GameObject.FindObjectsOfType<obstaculo>();
    foreach(obstaculo Obstaculo in obstaculos)
    {
        Obstaculo.destruir();
    }
}

}