Menu
CoddyTech

Столкновение завершает забег

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

challenge icon

Задание

Средне

При столкновении забег должен остановиться.

  1. Над GameManager объяви public enum GameState { Playing, GameOver }; внутри добавь public GameState state = GameState.Playing;.
  2. public void GameOver() присваивает state значение GameState.GameOver, присваивает speed значение 0 и показывает gameOverPanel.
  3. Runner вызывает GameManager.Instance.GameOver() при срабатывании триггера с тегом Obstacle. Скрипты GameManager, Runner и Spawner начинают Update() с return, если состояние не Playing.

Нажми «Играть» и столкнись с препятствием: всё остановится. Затем нажми «Проверить».

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

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
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;
    public GameObject gameOverPanel;
    public Button restartButton;
    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";
    }
}

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

Потренируйтесь самостоятельно: Песочница Unity