Chocar y reiniciar
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 31 de 56.
Desafío
IntermedioUn 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 campopublic GameState stateque comienza comoPlaying. - Añade
using UnityEngine.UI;,using UnityEngine.SceneManagement;,public GameObject gameOverPanel;ypublic Button restartButton;. - Un método público
GameOver()establecestateenGameOver, establecespeeden 0, lo que detiene todos los obstáculos, y muestra el panel. Update()no hace nada a menos que el estado seaPlaying, así que la velocidad y la distancia se detienen.- En
Start(), haz querestartButtonvuelva 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
1Texto en pantalla
Canvas y textoMuestra la puntuaciónDa formato a los númerosUn temporizador de cuenta regresivaRepaso: velocímetro4Escenas y niveles
Cargar una escenaReiniciar el nivelSiguiente nivelConservar entre escenasRepaso: selección de nivel10Proyecto: plataformas 3D
El recorridoPlataformas móviles2Botones y pantallas
Botones y onClickLambdasConectar en el InspectorPaneles activados y desactivadosBarras de saludRepaso: tienda de mejoras5Guardar con PlayerPrefs
Guardar un númeroCargar con un valor predeterminadoPuntuación más altaGuardar ajustesRepaso: monedas en el banco3El gestor del juego
Un solo script ejecuta el juegoEl SingletonEstados del juegoActivar el estadoRepaso: gestor de rondas6Proyecto: corredor infinito
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entrada