Menu
CoddyTech

Tabrakan dan Mulai Ulang

Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 31 dari 56.

challenge icon

Tantangan

Sedang

Kecelakaan mengakhiri permainan, dan sebuah tombol memulai permainan berikutnya. Pertahankan semua hal dari pelajaran sebelumnya. Canvas memiliki GameOverPanel tersembunyi dengan RestartButton berlabel Jalankan lagi, dan scene mengisi dua field baru milik GameManager, yaitu gameOverPanel dan restartButton. Runner memiliki Rigidbody kinematik, jadi ia menerima pesan trigger dari obstacle.

Di GameManager:

  • Di atas class, deklarasikan public enum GameState { Playing, GameOver }, lalu tambahkan field public GameState state pada class yang nilai awalnya Playing.
  • Tambahkan using UnityEngine.UI;, using UnityEngine.SceneManagement;, public GameObject gameOverPanel;, dan public Button restartButton;.
  • Sebuah method publik GameOver() mengatur state ke GameOver, mengatur speed ke 0 sehingga semua obstacle berhenti, lalu menampilkan panel.
  • Update() tidak melakukan apa pun kecuali jika state adalah Playing, sehingga kecepatan dan jarak berhenti.
  • Di Start(), atur agar restartButton memuat ulang scene yang sedang berjalan.

Di Runner: saat memasuki trigger dengan tag Obstacle, panggil GameManager.Instance.GameOver(). Saat state bukan Playing, tombol panah tidak melakukan apa pun.

Di Spawner: jangan munculkan apa pun saat state bukan Playing.

Tekan Play, tabrak obstacle, lalu mulai lagi, kemudian tekan Check.

Coba sendiri

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

Semua pelajaran di Membangun Game Sungguhan