Então...Olhei de novo o código, e está tudo certo.
O erro continua mesmo baixando o projeto final da aula..
Código do Avião:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Aviao : MonoBehaviour {
private Rigidbody2D fisica;
[SerializeField]
private float forca;
private Diretor diretor;
private Vector3 posicaoInicial;
private bool deveImpulsionar;
private Animator animacao;
private void Awake()
{
this.posicaoInicial = this.transform.position;
this.fisica = this.GetComponent<Rigidbody2D>();
this.animacao = this.GetComponent<Animator>();
}
private void Start()
{
this.diretor = GameObject.FindObjectOfType<Diretor>();
}
private void Update () {
if (Input.GetButtonDown("Fire1"))
{
this.deveImpulsionar = true;
}
this.animacao.SetFloat("VelocidadeY", this.fisica.velocity.y);
}
private void FixedUpdate()
{
if(this.deveImpulsionar)
{
this.Impulsionar();
}
}
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 * this.forca, ForceMode2D.Impulse);
this.deveImpulsionar = false;
}
private void OnCollisionEnter2D(Collision2D colisao)
{
this.fisica.simulated = false;
this.diretor.FinalizarJogo();
}
}
Código do Diretor:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Diretor : MonoBehaviour {
private Aviao aviao;
private Pontuacao pontucao;
private InterfaceGameOver interfaceGameOver;
private void Start()
{
this.aviao = GameObject.FindObjectOfType<Aviao>();
this.pontucao = GameObject.FindObjectOfType<Pontuacao>();
this.interfaceGameOver = GameObject.FindObjectOfType<InterfaceGameOver>();
}
public void FinalizarJogo()
{
Time.timeScale = 0;
this.pontucao.SalvarRecorde();
this.interfaceGameOver.MostrarInterface();
}
public void ReiniciarJogo()
{
this.interfaceGameOver.EsconderInterface();
Time.timeScale = 1;
this.aviao.Reiniciar();
this.DestruirObstaculos();
this.pontucao.Reiniciar();
}
private void DestruirObstaculos()
{
Obstaculo[] obstaculos = GameObject.FindObjectsOfType<Obstaculo>();
foreach(Obstaculo obstaculo in obstaculos)
{
obstaculo.Destruir();
}
}
}