غرفة الهروب
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 63 من 63.
غرفة هروب مزوّدة بقفل ذي رمز. توجد ثلاث لوحات ضغط رمادية على الأرض، ولا يُفتح الباب في الجدار الشمالي إلا عندما يخطو اللاعب عليها بالترتيب الصحيح: اللوحة 1، اللوحة 2، اللوحة 3. لا يوجد في الغرفة ما يوضح أي لوحة هي أيٌّ منها. تؤدي الدوس على لوحة خاطئة إلى إعادة الرمز من البداية، وتومض كل لوحة باللون الأحمر لمدة ثانية. يظل الباب المفتوح مفتوحًا لبضع ثوانٍ، ثم يُغلق مجددًا، لكنه لا يُغلق أبدًا على اللاعب: ما دام اللاعب واقفًا في المدخل، ينتظر الباب.
البرنامج النصي Player جاهز: تحرّك الأسهم اللاعب، الذي يحمل الوسم Player ويوجد على طبقة Player. اكتب برنامجين نصيين: Plate على كل لوحة وCodeLock على القفل.
التحدي
صعب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
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق