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.
Défi
DifficileL’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 unpublic enum Stateimbriqué avecPlaying,Paused,WonetLost, ainsi qu’unpublic State state. La nuit commence en Playing. - Pendant Playing : le nombre de secondes restantes diminue à partir de
nightLengthet s’affiche arrondi à l’entier supérieur, par exempleDawn in 12; toutes lesspawnEverysecondes, une chauve-souris apparaît à l’un desspawnPoints, choisi au hasard. Quand le temps est écoulé, la nuit est Won. pauseButtonfait passer de Playing à Paused et inversement. Paused arrête le temps du jeu (Time.timeScale0) et affichepausePanel; 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, avecendTextcontenantYou survived the night!ouThe bats got you. restartButtonlance 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;
}
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
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque