Menu
CoddyTech

Kaçış Odası

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 63 / 63.

Kod kilitli bir kaçış odası. Yerde üç gri basınç plakası var ve kuzey duvarındaki kapı yalnızca oyuncu bunların üzerine doğru sırayla bastığında açılıyor: 1. plaka, 2. plaka, 3. plaka. Odada hangi plakanın hangisi olduğunu belirten hiçbir şey yok. Yanlış bir plakaya basılması kodu baştan başlatır ve tüm plakaları bir saniyeliğine kırmızı renkte yakıp söndürür. Açılan kapı birkaç saniye açık kalır, sonra yeniden kapanır; ancak oyuncunun üzerine asla kapanmaz: oyuncu kapı aralığında durduğu sürece kapı bekler.

Player betiği hazır: ok tuşları oyuncuyu hareket ettirir; oyuncu Player etiketiyle işaretlenmiştir ve Player katmanında bulunur. İki betik yaz: her plakanın üzerinde Plate ve Lock üzerinde CodeLock.

challenge icon

Görev

Zor

Plate, her bir plakanın üzerinde (bir tetikleyici). Inspector, ona number (1, 2 veya 3) ve codeLock (Lock'un CodeLock betiği) değerlerini verir.

  • Oyuncu (Player etiketiyle etiketlenmiş) plakanın üzerine bastığında codeLock.Press(number) çağrılır. Üzerine düşen başka hiçbir şey bir işlem yapmaz.

CodeLock, Lock üzerinde. Inspector, ona plates (üç plakanın Renderer bileşenleri, sıralı olarak), door (Door), doorway (kapı aralığının ortasındaki bir nokta) ve openTime (4) değerlerini verir.

  • Bir public metot Press(int number). number, kodun sırada beklediği plakaysa (önce 1, sonra 2, ardından 3), bunu Plate 2 şeklinde günlüğe kaydeder. Bu 3 numaralı plakaysa ayrıca Unlocked ifadesini günlüğe kaydeder, kodu 1 numaralı plakadan başlayacak şekilde sıfırlar ve kapıyı açan bir coroutine başlatır.
  • Başka herhangi bir plaka Wrong plate ifadesini günlüğe kaydeder, kodu 1 numaralı plakadan başlayacak şekilde sıfırlar ve her plakayı 1 saniyeliğine kırmızıya (Color.red) çevirip ardından tekrar griye (Color.gray) döndüren bir coroutine başlatır.
  • Kapı coroutine'i kapıyı devre dışı bırakır ve openTime saniye bekler. Ardından, Player katmanındaki herhangi bir şey doorway noktasına 1 birim mesafede olduğu sürece, her seferinde bir kare beklemeye devam eder. Son olarak kapıyı yeniden etkinleştirir ve Door closed ifadesini günlüğe kaydeder.

Play'e bas, doğru sırayı bul ve çık, ardından Check'e bas.

Kendin dene

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)
    {
        // kodu kontrol et; yanlış bir kod girildiğinde plakaları yanıp söndür; 3. plakadan sonra kapıyı aç
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Fizik ve Oynanış bölümündeki tüm dersler