Salle d’évasion
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 63 sur 63.
Une salle d’évasion avec une serrure à code. Trois plaques de pression grises sont posées au sol, et la porte du mur nord ne s’ouvre que lorsque le joueur marche dessus dans le bon ordre : plaque 1, plaque 2, plaque 3. Rien dans la pièce n’indique quelle plaque est laquelle. Une mauvaise plaque réinitialise le code et fait clignoter toutes les plaques en rouge pendant une seconde. La porte ouverte reste ouverte quelques secondes, puis se referme, mais jamais sur le joueur : tant que le joueur se tient dans l’embrasure, elle attend.
Le script Player est prêt : les flèches déplacent le joueur, qui porte le tag Player et se trouve sur le calque Player. Écris deux scripts : Plate sur chaque plaque et CodeLock sur la serrure.
Défi
DifficilePlate, sur chaque plaque (un déclencheur). Dans l’inspecteur, attribuez-lui number (1, 2 ou 3) et codeLock (le script CodeLock du verrou).
- Lorsque le joueur (étiqueté
Player) marche sur la plaque, appelezcodeLock.Press(number). Tout autre objet qui atterrit dessus ne fait rien.
CodeLock, sur le verrou. Dans l’inspecteur, attribuez-lui plates (les Renderers des trois plaques, dans l’ordre), door (la porte), doorway (un point au milieu de l’embrasure) et openTime (4).
- Une méthode publique
Press(int number). Lorsquenumbercorrespond à la plaque attendue ensuite (1, puis 2, puis 3), affichez-la dans le journal, commePlate 2. Lorsque la plaque 3 a été activée, affichez égalementUnlocked, recommencez le code à partir de la plaque 1 et démarrez une coroutine qui ouvre la porte. - Toute autre plaque affiche
Wrong plate, recommence le code à partir de la plaque 1 et démarre une coroutine qui fait passer chaque plaque au rouge (Color.red) pendant 1 seconde, puis la remet en gris (Color.gray). - La coroutine de la porte désactive celle-ci et attend
openTimesecondes. Ensuite, elle continue d’attendre, une image à la fois, tant qu’un objet sur le calque Player se trouve à moins d’une unité dedoorway. Enfin, elle réactive la porte et afficheDoor closed.
Cliquez sur Play, trouvez l’ordre et sortez, puis cliquez sur Check.
Essayez vous-même
using System.Collections;
using UnityEngine;
public class CodeLock : MonoBehaviour
{
[SerializeField] private Renderer[] plates;
[SerializeField] private GameObject door;
[SerializeField] private Transform doorway;
[SerializeField] private float openTime = 4f;
public void Press(int number)
{
// vérifier le code ; faire clignoter les plaques en cas de mauvais code ; ouvrir la porte après la plaque 3
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Physique et gameplay
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser