Menu
CoddyTech

الباب

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

يختتم هذا التحدي القسم: أطباق تعمل كمُشغِّلات، وشيفرة محفوظة في نص برمجي واحد، وباب تتحكم فيه مهمة روتينية مشتركة تنتظر حتى يخلو المدخل.

challenge icon

التحدي

صعب

افتح الباب عند Unlocked، وأغلقه مرة أخرى لاحقًا، دون أن يكون اللاعب في طريقه أبدًا.

  1. اكتب IEnumerator OpenDoor(): door.SetActive(false);، ثم yield return new WaitForSeconds(openTime);.
  2. ثم استخدم while (Physics.CheckSphere(doorway.position, 1f, LayerMask.GetMask("Player")))، وyield return null;.
  3. أخيرًا، استخدم door.SetActive(true); وسجّل Door closed. ابدأها باستخدام StartCoroutine(OpenDoor()); بعد تسجيل Unlocked.

اضغط «العب»، وافتح الباب واخرج. ثم اضغط «تحقق».

جرّب بنفسك

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;
    private int next = 1;

    public void Press(int number)
    {
        if (number == next)
        {
            Debug.Log("Plate " + number);
            next++;
            if (next > 3)
            {
                Debug.Log("Unlocked");
                next = 1;
            }
        }
        else
        {
            Debug.Log("Wrong plate");
            next = 1;
            StartCoroutine(Flash());
        }
    }

    IEnumerator Flash()
    {
        foreach (Renderer plate in plates)
        {
            plate.material.color = Color.red;
        }
        yield return new WaitForSeconds(1f);
        foreach (Renderer plate in plates)
        {
            plate.material.color = Color.gray;
        }
    }

}
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: Playground لـ Unity