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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה פיזיקה ומשחקיות

תרגלו בעצמכם: Unity אונליין