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.
Görev
ZorPlate, 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 (
Playeretiketiyle etiketlenmiş) plakanın üzerine bastığındacodeLock.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), bunuPlate 2şeklinde günlüğe kaydeder. Bu 3 numaralı plakaysa ayrıcaUnlockedifadesini 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 plateifadesini 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
openTimesaniye bekler. Ardından, Player katmanındaki herhangi bir şeydoorwaynoktasına 1 birim mesafede olduğu sürece, her seferinde bir kare beklemeye devam eder. Son olarak kapıyı yeniden etkinleştirir veDoor closedifadesini 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ç
}
}
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
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir Duvar