Menu
CoddyTech

Chocar y reiniciar

Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 31 de 56.

challenge icon

Desafío

Intermedio

Un choque termina la partida, y un botón inicia la siguiente. Conserva todo lo de las lecciones anteriores. El lienzo tiene un GameOverPanel oculto con un RestartButton etiquetado Ejecutar de nuevo, y la escena rellena dos campos nuevos de GameManager, gameOverPanel y restartButton. El Runner tiene un Rigidbody cinemático, así que recibe mensajes de activación de los obstáculos.

En GameManager:

  • Encima de la clase, declara public enum GameState { Playing, GameOver }, y añade a la clase un campo public GameState state que comienza como Playing.
  • Añade using UnityEngine.UI;, using UnityEngine.SceneManagement;, public GameObject gameOverPanel; y public Button restartButton;.
  • Un método público GameOver() establece state en GameOver, establece speed en 0, lo que detiene todos los obstáculos, y muestra el panel.
  • Update() no hace nada a menos que el estado sea Playing, así que la velocidad y la distancia se detienen.
  • En Start(), haz que restartButton vuelva a cargar la escena que está en ejecución.

En Runner: cuando entra en un activador etiquetado como Obstacle, llama a GameManager.Instance.GameOver(). Mientras el estado no sea Playing, las flechas no hacen nada.

En Spawner: no generes nada mientras el estado no sea Playing.

Pulsa Play, choca y vuelve a jugar; después, pulsa Check.

Pruébalo tú mismo

using UnityEngine;
using TMPro;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public float speed = 10f;
    public float speedUp = 0.5f;
    public float maxSpeed = 20f;
    public TMP_Text distanceText;
    private float distance;

    void Awake()
    {
        Instance = this;
    }

    void Update()
    {
        speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
        distance += speed * Time.deltaTime;
        distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
    }
}

Todas las lecciones de Creación de juegos reales