mesmo quando bate do chão o game over não aprece e quando o obstaculo gera ele continua ali parado esses são o código que modifiquei até agora
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Obstaculo : MonoBehaviour {
[SerializeField]
private VariavelCompartilhadaFLoat velocidade;
[SerializeField]
private float variacaoDaPosicaoY;
private Vector3 posicaoDoAviao;
private bool pontuei;
private Pontuacao pontuacao;
private void Awake()
{
this.transform.Translate(Vector3.up * Random.Range(-variacaoDaPosicaoY,variacaoDaPosicaoY));
}
private void Start()
{
this.posicaoDoAviao = GameObject.FindObjectOfType<Aviao>().transform.position;
this.pontuacao = GameObject.FindObjectOfType<Pontuacao> ();
}
private void Update()
{
this.transform.Translate(Vector3.left * this.velocidade.valor * Time.deltaTime);
if (!this.pontuei && this.transform.position.x < this.posicaoDoAviao.x)
{
this.pontuei = true;
this.pontuacao.AdicionarPontos();
}
}
private void OnTriggerEnter2D(Collider2D outro)
{
this.Destruir();
}
public void Destruir()
{
GameObject.Destroy(this.gameObject);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class InterfaceGameOver : MonoBehaviour {
[SerializeField]
private GameObject imagemGameOver;
[SerializeField]
private Text valorRecorde;
[SerializeField]
private Image posicaoMedalha;
[SerializeField]
private Sprite medalhaOuro;
[SerializeField]
private Sprite medalhaPrata;
[SerializeField]
private Sprite medalhaBronze;
private Pontuacao pontuacao;
private int recorde;
public void MostrarInterface()
{
this.AtualizarInterfaceGrafica();
this.imagemGameOver.SetActive(true);
}
private void Start()
{
this.pontuacao = GameObject.FindObjectOfType<Pontuacao>();
}
public void EsconderInterface()
{
this.imagemGameOver.SetActive(false);
}
private void AtualizarInterfaceGrafica()
{
this.recorde = PlayerPrefs.GetInt("recorde");
this.valorRecorde.text = recorde.ToString();
this.VerificarCorMedalha();
}
private void VerificarCorMedalha()
{
if (this.pontuacao.Pontos > this.recorde - 2)
{
this.posicaoMedalha.sprite = this.medalhaOuro;
} else if (this.pontuacao.Pontos > this.recorde / 2)
{
this.posicaoMedalha.sprite = this.medalhaPrata;
} else
{
this.posicaoMedalha.sprite = this.medalhaBronze;
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "variavel compartilhada", menuName = "Variavel Compartilhada / float")]
public class VariavelCompartilhadaFLoat : ScriptableObject {
public float valor;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Carrossel : MonoBehaviour {
[SerializeField]
private VariavelCompartilhadaFLoat velocidade;
private Vector3 posicaoInicial;
private float tamanhoRealDaImagem;
private void Awake()
{
this.posicaoInicial = this.transform.position;
float tamanhoDaImagem = this.GetComponent<SpriteRenderer>().size.x;
float escala = this.transform.localScale.x;
this.tamanhoRealDaImagem = tamanhoDaImagem * escala;
}
private void Update ()
{
float deslocamento = Mathf.Repeat(this.velocidade.valor * Time.time, this.tamanhoRealDaImagem);
this.transform.position = this.posicaoInicial + Vector3.left * deslocamento;
}
}