Menu
CoddyTech

Malam Bertahan Hidup

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

Seorang penyintas berdiri di sebuah lapangan gelap, dan kelelawar berdatangan untuk menyerangnya sepanjang malam, satu kelelawar baru setiap beberapa detik dari salah satu dari empat sudut lapangan. Setiap kelelawar terbang lurus ke arah penyintas, dan kelelawar pertama yang mencapainya mengakhiri malam. Jam di bagian atas menghitung detik hingga fajar: bertahanlah sampai saat itu dan kamu menang. Tombol Jeda membekukan semuanya, dan saat malam berakhir, Main lagi memulai malam baru.

Skrip Player, yang menggerakkan penyintas dengan aksi Move, sudah ditulis. Tulis GameManager dan Bat.

challenge icon

Tantangan

Sulit

Inspector memberikan GameManager nilai nightLength (15), spawnEvery (2), batPrefab, spawnPoints (keempat sudut), dawnText, pauseButton, pausePanel, endPanel, endText, dan restartButton.

  • Ini adalah singleton (public static GameManager Instance), dan memiliki public enum State bersarang dengan Playing, Paused, Won, dan Lost, serta public State state. Malam dimulai dalam status Playing.
  • Saat statusnya Playing: jumlah detik yang tersisa berkurang dari nightLength, ditampilkan dengan pembulatan ke atas, seperti Dawn in 12; setiap spawnEvery detik, seekor kelelawar muncul di salah satu spawnPoints yang dipilih secara acak. Saat waktu habis, status malam menjadi Won.
  • pauseButton mengubah status Playing menjadi Paused dan sebaliknya. Status Paused menghentikan waktu game (Time.timeScale 0) dan menampilkan pausePanel; saat kembali ke status Playing, waktu berjalan lagi dan panel disembunyikan. Dalam status Won atau Lost, tombol ini tidak melakukan apa pun.
  • Lose() yang bersifat public mengubah status malam dari Playing menjadi Lost.
  • Status Won dan Lost menghentikan waktu game serta menampilkan endPanel dengan endText yang berisi You survived the night! atau The bats got you.
  • restartButton memulai malam baru dengan memuat ulang scene.

Inspector memberikan nilai speed (2) dan reach (1) kepada Bat. Saat status malam Playing, kelelawar terbang menuju pemain (yang memiliki tag Player) dengan kecepatan speed, sambil mempertahankan ketinggiannya. Saat kelelawar berada dalam jarak reach dari pemain di bidang tanah, kelelawar memanggil Lose().

Tekan Play dan coba bertahan sampai fajar, lalu tekan Check.

Coba sendiri

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class GameManager : MonoBehaviour
{
    public float nightLength = 15f;
    public float spawnEvery = 2f;
    public GameObject batPrefab;
    public Transform[] spawnPoints;
    public TMP_Text dawnText;
    public Button pauseButton;
    public GameObject pausePanel;
    public GameObject endPanel;
    public TMP_Text endText;
    public Button restartButton;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Membangun Game Sungguhan