Estou fazendo o curso "Unity 2D parte 1: criando um jogo 2D" e estou com dificuldades na aula "04.Game Over" na segunda atividade "Congelando o tempo". A Unity da erro quando tento chamar a função "FinalizarJogo()" do script "diretor.cs" dentro do script "aviao.cs".
NullReferemceException: Object reference not set to an object Avião.OnCollisionEnter2D (UnityEngine.Collision2D colisao) (at Assets/Scripts/Avião.cs:43)
Avião
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Avião : MonoBehaviour {
private Rigidbody2D fisica;
[SerializeField]
private float forca;
[SerializeField]
private GameObject GameOver;
private Diretor diretor;
//private Vector3 posicaoInicial;
private void Awake() {
this.fisica = this.GetComponent<Rigidbody2D>();
this.diretor = GameObject.FindObjectOfType<Diretor>();
//this.posicaoInicial = this.transform.position
}
// Executado a cada frame
private void Update() {
if(Input.GetButtonDown("Fire1"))
{
this.Subir();
}
if(Input.GetButtonDown("Fire2"))
{
this.Descer();
}
}
private void Subir() {
this.fisica.AddForce(Vector2.up * forca, ForceMode2D.Impulse);
}
private void Descer() {
this.fisica.AddForce(Vector2.down * forca, ForceMode2D.Impulse);
}
private void OnCollisionEnter2D(Collision2D colisao) {
this.diretor.FinalizarJogo();
this.fisica.simulated = false;
}
}
Diretor
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Diretor : MonoBehaviour {
[SerializeField]
private GameObject GameOver;
public void FinalizarJogo() {
Time.timeScale = 0;
this.GameOver.SetActive(true);
}
}