2
respostas

O jogo travou de vez e o obstaculo não mexe

mesmo quando bate do chão o game over não aprece e quando o obstaculo gera ele continua ali parado Insira aqui a descrição dessa imagem para ajudar na acessibilidade 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;
    }
}
2 respostas

Oii, Yohana! Tudo bem?

Obrigada por disponibilizar o seu código, por ele não consegui notar nenhum erro aparentemente.

Nesse caso, gostaria de pedir a você para verificar se possui alguma mensagem de erro no console e compartilhar o print para podermos pesquisar mais a fundo uma solução.

Qualquer dúvida, conte comigo.

Fico no aguardo e à disposição

Obrigada pela a juda o erro foi meu que simplesmente coloquei o carrossel em vez de obstaculo no prefabs do obstaculo.

Porém agora mesmo com a interface gamer dentro do canva e a imagem de gamer over na hora da colisão ele não aparece o gamer over só trava o jogo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software