Menu
CoddyTech

Notte di sopravvivenza

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 56 di 56.

Una persona sopravvissuta si trova in un campo buio e i pipistrelli le danno la caccia per tutta la notte: ne arriva uno nuovo ogni paio di secondi da uno dei quattro angoli del campo. Ogni pipistrello vola dritto verso la persona sopravvissuta, e il primo che la raggiunge pone fine alla notte. Un orologio in alto conta i secondi che mancano all'alba: resisti fino ad allora e vinci. Un pulsante Pausa blocca tutto e, quando la notte finisce, Gioca di nuovo ne avvia una nuova.

Lo script Player, che fa camminare la persona sopravvissuta con l'azione Move, è già scritto. Scrivi GameManager e Bat.

challenge icon

Sfida

Difficile

L'Inspector fornisce a GameManager nightLength (15), spawnEvery (2), batPrefab, spawnPoints (i quattro angoli), dawnText, pauseButton, pausePanel, endPanel, endText e restartButton.

  • È un singleton (public static GameManager Instance) e ha un public enum State annidato con Playing, Paused, Won e Lost, e un public State state. La notte inizia in Playing.
  • Mentre è in Playing: i secondi rimanenti diminuiscono da nightLength, mostrati arrotondati per eccesso, come Dawn in 12; ogni spawnEvery secondi appare un pipistrello in uno degli spawnPoints, scelto a caso. Quando non rimane più tempo, la notte è Won.
  • pauseButton alterna Playing e Paused. Paused ferma il tempo del gioco (Time.timeScale 0) e mostra pausePanel; tornando a Playing, il tempo riparte e il pannello viene nascosto. In Won o Lost non succede nulla.
  • Una chiamata pubblica a Lose() fa passare una notte in Playing a Lost.
  • Won e Lost fermano il tempo del gioco e mostrano endPanel con endText che visualizza You survived the night! oppure The bats got you.
  • restartButton avvia una nuova notte ricaricando la scena.

L'Inspector fornisce a Bat speed (2) e reach (1). Mentre la notte è in Playing, un pipistrello vola verso il giocatore (con tag Player) a speed, mantenendo la propria altezza. Quando raggiunge una distanza inferiore a reach dal giocatore sul piano del terreno, chiama Lose().

Premi Play e prova a resistere fino all'alba, poi Check.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi