Collision et redémarrage
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 31 sur 56.
Défi
MoyenUn crash met fin à la partie, et un bouton en lance une nouvelle. Conserve tout ce qui vient des leçons précédentes. Le canevas contient un GameOverPanel masqué avec un RestartButton intitulé Relancer, et la scène renseigne deux nouveaux champs de GameManager, gameOverPanel et restartButton. Le Runner possède un Rigidbody cinématique, il reçoit donc les messages de déclenchement des obstacles.
Dans GameManager :
- Au-dessus de la classe, déclare
public enum GameState { Playing, GameOver }, puis ajoute à la classe un champpublic GameState statequi commence parPlaying. - Ajoute
using UnityEngine.UI;,using UnityEngine.SceneManagement;,public GameObject gameOverPanel;etpublic Button restartButton;. - Une méthode publique
GameOver()définitstatesurGameOver, définitspeedsur 0, ce qui arrête tous les obstacles, et affiche le panneau. Update()ne fait rien tant que l’état n’est pasPlaying, ainsi la vitesse et la distance s’arrêtent.- Dans
Start(), fais en sorte querestartButtonrecharge la scène en cours.
Dans Runner : lorsqu’il entre dans un déclencheur portant l’étiquette Obstacle, appelle GameManager.Instance.GameOver(). Tant que l’état n’est pas Playing, les flèches ne font rien.
Dans Spawner : ne génère rien tant que l’état n’est pas Playing.
Appuie sur Jouer, provoque un crash et relance la partie, puis clique sur Vérifier.
Essayez vous-même
using UnityEngine;
using TMPro;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public float speed = 10f;
public float speedUp = 0.5f;
public float maxSpeed = 20f;
public TMP_Text distanceText;
private float distance;
void Awake()
{
Instance = this;
}
void Update()
{
speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
distance += speed * Time.deltaTime;
distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
}
}
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 banque3Le gestionnaire du jeu
Un seul script gère le jeuLe SingletonLes états du jeuBasculer selon l’étatRécapitulatif : gestionnaire de manche6Projet : course sans fin
Trois voiesObstacles en vue