Menu
CoddyTech

Повторение: клавиша взаимодействия

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 9 из 50.

challenge icon

Задание

Легко

Добавьте игроку клавишу взаимодействия. Стрелки перемещают Player (Mover.cs, готово), а клавиша Space позволяет взаимодействовать с ближайшим объектом в пределах досягаемости. Напишите следующие части:

  • IInteractable: интерфейс с одним методом — void Interact().
  • Door: при каждом взаимодействии дверь открывается или закрывается. При открытии она поворачивается на 90 градусов вокруг оси y и выводит в журнал Door opened; при закрытии поворачивается обратно и выводит в журнал Door closed.
  • Chest: при первом взаимодействии выводит в журнал Found 5 coins (значение coins задаёт Inspector) и опустошается. При каждом последующем взаимодействии выводит в журнал The chest is empty.
  • Lever: при каждом взаимодействии переключает bridge (GameObject, который задаёт Inspector и который изначально скрыт) — включает или выключает его — и выводит в журнал Lever pulled.
  • Interactor на Player: при нажатии Space (считайте нажатие с помощью Keyboard.current из Input System) найдите коллайдеры в пределах reach (1.5) с помощью Physics.OverlapSphere и вызовите Interact() у ближайшего к игроку объекта, у которого есть IInteractable. Если в пределах досягаемости ничего нет, ничего не происходит.

Нажмите Играть, походите и взаимодействуйте со всеми объектами, затем нажмите Проверить.

Попробуйте сами

using UnityEngine;
using UnityEngine.InputSystem;

// Space взаимодействует с ближайшим объектом в пределах досягаемости.
public class Interactor : MonoBehaviour
{
    public float reach = 1.5f;
}

Все уроки раздела Архитектура игр в Unity