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