Menu
CoddyTech
flag Ar iconالعربيةdown icon

غرفة الهروب

جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 63 من 63.

غرفة هروب مزوّدة بقفل ذي رمز. توجد ثلاث لوحات ضغط رمادية على الأرض، ولا يُفتح الباب في الجدار الشمالي إلا عندما يخطو اللاعب عليها بالترتيب الصحيح: اللوحة 1، اللوحة 2، اللوحة 3. لا يوجد في الغرفة ما يوضح أي لوحة هي أيٌّ منها. تؤدي الدوس على لوحة خاطئة إلى إعادة الرمز من البداية، وتومض كل لوحة باللون الأحمر لمدة ثانية. يظل الباب المفتوح مفتوحًا لبضع ثوانٍ، ثم يُغلق مجددًا، لكنه لا يُغلق أبدًا على اللاعب: ما دام اللاعب واقفًا في المدخل، ينتظر الباب.

البرنامج النصي Player جاهز: تحرّك الأسهم اللاعب، الذي يحمل الوسم Player ويوجد على طبقة Player. اكتب برنامجين نصيين: Plate على كل لوحة وCodeLock على القفل.

challenge icon

التحدي

صعب

Plate، على كل لوحة (كمُشغِّل). يعيّن له Inspector قيمة number (1 أو 2 أو 3) وcodeLock (نص CodeLock البرمجي الخاص بالقفل).

  • عندما يخطو اللاعب (الموسوم بـ Player) على اللوحة، استدعِ codeLock.Press(number). أي شيء آخر يهبط عليها لا يفعل شيئًا.

CodeLock، على القفل. يعيّن له Inspector قيمة plates (مكوّنات Renderer للوحات الثلاث، بالترتيب)، وdoor (الباب)، وdoorway (نقطة في منتصف المدخل)، وopenTime (4).

  • طريقة عامة Press(int number). عندما تكون number هي رقم اللوحة التي يتوقعها الرمز بعد ذلك (1، ثم 2، ثم 3)، سجّلها، مثل Plate 2. عندما تكون اللوحة هي الثالثة، سجّل أيضًا Unlocked، وابدأ الرمز من جديد من اللوحة الأولى، وابدأ روتينًا فرعيًا يفتح الباب.
  • أي لوحة أخرى تسجّل Wrong plate، وتبدأ الرمز من جديد من اللوحة الأولى، وتبدأ روتينًا فرعيًا يجعل كل لوحة حمراء (Color.red) لمدة ثانية واحدة، ثم يعيدها إلى الرمادي (Color.gray).
  • يعطّل روتين الباب الفرعي الباب وينتظر openTime ثانية. ثم يواصل الانتظار، إطارًا بعد إطار، ما دام أي شيء على طبقة Player ضمن مسافة وحدة واحدة من doorway. أخيرًا، يفعّل الباب مجددًا ويسجّل Door closed.

اضغط Play، واكتشف الترتيب واخرج، ثم اضغط Check.

جرّب بنفسك

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)
    {
        // تحقّق من الرمز؛ اجعل plates تومض عند إدخال رمز خاطئ؛ افتح الباب بعد plate 3
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الفيزياء وأسلوب اللعب