Дверь
Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 71 из 71.
Это задание завершает раздел: пластины, работающие как триггеры, код в одном скрипте и дверь, управляемая корутиной, которая ждёт, пока проход освободится.
Задание
СложноОткрывай дверь при Unlocked и закрывай её позже, но никогда не тогда, когда в проёме находится игрок.
- Напиши
IEnumerator OpenDoor():door.SetActive(false);, затемyield return new WaitForSeconds(openTime);. - Затем добавь
while (Physics.CheckSphere(doorway.position, 1f, LayerMask.GetMask("Player")))иyield return null;. - В конце добавь
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;
}
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Физика и игровой процесс
1Твёрдое тело
Гравитация и массаТолкаем с помощью AddForceПрыжок с импульсомFixedUpdate для физикиСкоростьКинематические телаПовторение: пусковая площадка4Корутины
InvokeInvokeRepeating, CancelInvokeВаша первая корутинаЦиклы в корутинахОстановка корутинПовторение: обратный отсчёт10Проект: Побег с арены
АренаОхотники2Столкновения
OnCollisionEnterВо что я попал?Разрушение при столкновенииСтояние на землеОтскок и трениеФормы коллайдеровПовторение: разрушаемая стена5Проект: Монетная гонка
Катящийся шарСобираем монетыПотренируйтесь самостоятельно: Песочница Unity