docmikhail
@docmikhail

Открыть панель при нажатии на клавишу?

Проект Unity, помещение с несколькими объектами. Задача:

- Подходим к первому объекту, нажимаем Enter и открывается одна панель (с текстом, скажем).
- Подходим ко второму объекту, нажимает Enter и открывается вторая панель.
- и тд.

Как можно такое реализовать?

Спасибо за любую помощь.
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos Куратор тега Unity
Обычно такое реализуется написанием кода.
С какой частью задачи у вас проблемы то? Как Enter задетектить, или что?
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Рискну предположить что вы хотите показывать игроку описания объектов, на которые он смотрит. В таком случае задача решается примерно так:

0. На предметы, которые можно рассматривать, вешаем класс (назовем его Describable), который содержит собственно описание. Так же для оптимизации такие предметы нужно поместить на отдельный layer.

1. На камеру вешаем скрипт, который в Update делает raycast:
var fwdLook = camera.TransformDirection(Vector3.forward);
RaycastHit hit;
if (Physics.Raycast(camera.position, fwdLook, out hit, checkDistance, layer)) { // layer должен быть тот самый, где у нас предметы, checkDistance настроить по вкусу
    var describable = hit.transform.GetComponent<Describable>();
}


2. Проверяем, не нажал ли юзер Enter. Если нажал, то посылаем событие, которое слушает панель с текстом. В событии передаем текст, панель его отображает.

3. Если в пункте 1 describable равно null, это значит что игрок больше не смотрит на предмет, и мы посылаем событие, чтоб панель скрыла текст.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы