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.
Sfida
DifficileL'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 unpublic enum Stateannidato conPlaying,Paused,WoneLost, e unpublic State state. La notte inizia in Playing. - Mentre è in Playing: i secondi rimanenti diminuiscono da
nightLength, mostrati arrotondati per eccesso, comeDawn in 12; ognispawnEverysecondi appare un pipistrello in uno deglispawnPoints, scelto a caso. Quando non rimane più tempo, la notte è Won. pauseButtonalterna Playing e Paused. Paused ferma il tempo del gioco (Time.timeScale0) e mostrapausePanel; 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
endPanelconendTextche visualizzaYou survived the night!oppureThe bats got you. restartButtonavvia 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;
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro4Scene e livelli
Caricare una scenaRiavviare il livelloLivello successivoMantenere i dati tra le sceneRiepilogo: selezione del livello10Progetto: Platform 3D
Il percorsoPiattaforme mobili2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Corsa infinita
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di input