Menu
CoddyTech

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.

challenge icon

Défi

Difficile

Plate, 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, appelez codeLock.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). Lorsque number correspond à la plaque attendue ensuite (1, puis 2, puis 3), affichez-la dans le journal, comme Plate 2. Lorsque la plaque 3 a été activée, affichez également Unlocked, 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 openTime secondes. Ensuite, elle continue d’attendre, une image à la fois, tant qu’un objet sur le calque Player se trouve à moins d’une unité de doorway. Enfin, elle réactive la porte et affiche Door 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
    }
}
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 Physique et gameplay