Menu
CoddyTech

Столкновение и перезапуск

Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 31 из 56.

challenge icon

Задание

Средне

Столкновение завершает забег, а кнопка запускает следующий. Сохрани всё из предыдущих уроков. На холсте есть скрытая панель GameOverPanel с кнопкой RestartButton с надписью «Запустить снова», а сцена заполняет два новых поля GameManager: gameOverPanel и restartButton. У Runner есть кинематическое тело Rigidbody, поэтому он получает сообщения о триггерах от препятствий.

В GameManager:

  • Над классом объяви public enum GameState { Playing, GameOver }, а в классе добавь поле public GameState state, начальное значение которого — Playing.
  • Добавь using UnityEngine.UI;, using UnityEngine.SceneManagement;, public GameObject gameOverPanel; и public Button restartButton;.
  • Публичный метод GameOver() задаёт для state значение GameOver, задаёт для speed значение 0, останавливая все препятствия, и показывает панель.
  • Update() ничего не делает, если состояние не Playing, поэтому скорость и расстояние перестают изменяться.
  • В Start() настрой restartButton так, чтобы он перезагружал текущую сцену.

В Runner: когда он входит в триггер с тегом Obstacle, вызови GameManager.Instance.GameOver(). Пока состояние не Playing, стрелки не работают.

В Spawner: не создавай препятствия, пока состояние не Playing.

Нажми Play, столкнись с препятствием и запусти игру снова, затем нажми Check.

Попробуйте сами

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";
    }
}

Все уроки раздела Создание настоящих игр