Menu
CoddyTech

Drzwi

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 71 z 71.

To wyzwanie kończy sekcję: płyty działające jako wyzwalacze, kod przechowywany w jednym skrypcie oraz drzwi sterowane przez procedurę współbieżną, która czeka, aż przejście będzie wolne.

challenge icon

Wyzwanie

Trudny

Otwórz drzwi po Unlocked i zamknij je później, ale nigdy wtedy, gdy gracz znajduje się w przejściu.

  1. Napisz IEnumerator OpenDoor(): door.SetActive(false);, a następnie yield return new WaitForSeconds(openTime);.
  2. Następnie wykonuj while (Physics.CheckSphere(doorway.position, 1f, LayerMask.GetMask("Player"))), yield return null;.
  3. Na koniec door.SetActive(true); i zapisz w logu Door closed. Uruchom tę funkcję za pomocą StartCoroutine(OpenDoor()); po zapisaniu w logu Unlocked.

Naciśnij „Graj”, odblokuj drzwi i wyjdź. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Fizyka i rozgrywka

Poćwicz samodzielnie: Edytor online Unity