Menu
CoddyTech

Nuit de survie

Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 56 sur 56.

Un survivant se tient dans un champ sombre, et des chauves-souris viennent le chercher toute la nuit, une nouvelle toutes les quelques secondes depuis l’un des quatre coins du champ. Chaque chauve-souris vole droit vers le survivant, et la première à l’atteindre met fin à la nuit. Une horloge en haut décompte les secondes jusqu’à l’aube : tiens jusque-là et tu gagnes. Un bouton Pause fige tout, et lorsque la nuit se termine, Jouer à nouveau en démarre une nouvelle.

Le script Player, qui fait marcher le survivant avec l’action Move, est écrit. Écris GameManager et Bat.

challenge icon

Défi

Difficile

L’Inspector fournit à GameManager nightLength (15), spawnEvery (2), batPrefab, spawnPoints (les quatre coins), dawnText, pauseButton, pausePanel, endPanel, endText et restartButton.

  • C’est un singleton (public static GameManager Instance) et il possède un public enum State imbriqué avec Playing, Paused, Won et Lost, ainsi qu’un public State state. La nuit commence en Playing.
  • Pendant Playing : le nombre de secondes restantes diminue à partir de nightLength et s’affiche arrondi à l’entier supérieur, par exemple Dawn in 12 ; toutes les spawnEvery secondes, une chauve-souris apparaît à l’un des spawnPoints, choisi au hasard. Quand le temps est écoulé, la nuit est Won.
  • pauseButton fait passer de Playing à Paused et inversement. Paused arrête le temps du jeu (Time.timeScale 0) et affiche pausePanel ; le retour à Playing relance le temps et masque ce panneau. En état Won ou Lost, le bouton ne fait rien.
  • Une méthode publique Lose() fait passer une nuit en Playing à l’état Lost.
  • Won et Lost arrêtent le temps du jeu et affichent endPanel, avec endText contenant You survived the night! ou The bats got you.
  • restartButton lance une nouvelle nuit en rechargeant la scène.

L’Inspector fournit à Bat speed (2) et reach (1). Tant que la nuit est en Playing, une chauve-souris vole vers le joueur (auquel est attribué le tag Player) à la vitesse speed, en gardant sa propre hauteur. Lorsqu’elle se trouve à une distance inférieure à reach du joueur sur le plan du sol, elle appelle Lose().

Appuie sur Play et essaie de tenir jusqu’à l’aube, puis clique sur Check.

Essayez vous-même

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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Créer de vrais jeux