Zderzenie i restart
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 31 z 56.
Wyzwanie
ŚredniKolizja kończy bieg, a przycisk rozpoczyna następny. Zachowaj wszystko z wcześniejszych lekcji. Na kanwie znajduje się ukryty GameOverPanel z RestartButton z etykietą Uruchom ponownie, a scena wypełnia dwa nowe pola w GameManager: gameOverPanel i restartButton. Runner ma kinematyczny Rigidbody, więc otrzymuje komunikaty o wyzwalaczach od przeszkód.
W GameManager:
- Nad klasą zadeklaruj
public enum GameState { Playing, GameOver }i dodaj do klasy polepublic GameState state, którego początkową wartością jestPlaying. - Dodaj
using UnityEngine.UI;,using UnityEngine.SceneManagement;,public GameObject gameOverPanel;ipublic Button restartButton;. - Publiczna metoda
GameOver()ustawiastatenaGameOver, ustawiaspeedna 0, co zatrzymuje wszystkie przeszkody, i wyświetla panel. Update()nic nie robi, jeśli stan nie jest równyPlaying, więc prędkość i dystans przestają się zmieniać.- W
Start()ustawrestartButtontak, by ponownie ładował uruchomioną scenę.
W Runner: gdy obiekt wchodzi w wyzwalacz oznaczony tagiem Obstacle, wywołaj GameManager.Instance.GameOver(). Gdy stan nie jest równy Playing, strzałki nic nie robią.
W Spawner: nie twórz żadnych obiektów, gdy stan nie jest równy Playing.
Naciśnij Play, zderz się z przeszkodą i uruchom grę ponownie, a następnie naciśnij Check.
Spróbuj swoich sił
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";
}
}
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz4Sceny i poziomy
Wczytaj scenęUruchom poziom ponownieNastępny poziomZachowaj między scenamiPodsumowanie: wybór poziomu10Projekt: platformówka 3D
TrasaRuchome platformy2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w banku3Menedżer gry
Jeden skrypt obsługuje gręSingletonStany gryInstrukcja switch dla stanuPowtórka: menedżer rund6Projekt: Niekończący się bieg
Trzy toryPrzeszkody przed tobą