top of page
Поиск
Фото автораРостислав Кейван

Индикатор цели на экране

Индикаторы на экране важная часть наверное каждой игры, принимайте это как стандарт игровой индустрии, если мы говорим о ААА играх то вам не обходима эта механика. Индикатор на экране обозначают игрока о возможных действиях которые ему доступны, в первую очередь оповестить его о взаемодействии с игровым обьектом, так же может быть и если игрок потерялся в игровой среде , обозначение врагов итд.


Возьмем к примеру такие игры как

  • Uncharted

  • Tomb Rider Lara Croft

  • Last of Us

Прежде чем приступать к разработке , мое иследование было на этих 3 играх


Uncharted 3: Drake's Deception

 

Shadow of the Tomb Rider

 

Last of Us 2

 


В своем проекте я разработал похожую механику, давайте взглянем.



Demonstration: Indicator on the screen

 


У Обьекта есть точка в пространстве, для общего понимания я обозначил ее красной, это центр координат обьекта. Я отказался от расчета дистанции и воспользовался тригерами, маленькая возможность для оптимизации. У каждого тригера я создал событие и которое вызывает нам нужное.


При инициализации сцены, обьект подгружает Дата контейнер (Scriptable Object) который в свою очередь проверяет какой устройство подключено, Dualshock, Oculus Touch, XBox геймпад не важно, после движок загружает спрайт (холст) с нужными клавишами которые и сохраняются в переменные


Давайте познакомимся с моей реализацией и разберем по подробнее

Всего есть 3 - зоны, при которых индекатор появляется.

  • Зона 1 - Игрок находится за пределами тригера, если игрок пересечет ее появится индикатор, я использовал линейную интерполяцию, и передал туда цвет используя сопрограмму. После чего идет проверка если игрок находится в этой зоне, если да то мы возвращаем Vector3 точку мирового пространства, созданная путем преобразования точки пространства экрана на заданном расстоянии z от плоскости камеры. Вот эта функция Camera.ScreenToWorldPoint она преобразовывает точку из экранного пространства в мировое пространство, где мировое пространство определяется как система координат на самом верху иерархии вашей игры. Координаты мирового пространства по-прежнему могут быть рассчитаны, даже если они предоставлены как внеэкранные координаты, например, для создания экземпляра внеэкранного объекта рядом с определенным углом экрана.


  • Зона 2 - Игрок находится за пределами Зоны 2 если игрок пересечет ее появится индикатор нужной кнопки которую нужно нажать, здесь таже интерполяция в деле, я называю эту зону "Зона Взаимодействия" так как мы показываем подсказки или иконки для игрока. Если игрок выйдет с зоны 2 иконка клавиши исчезнет.

  • Зона 3 - Игрок находится за пределами Зоны 3, если игрок пересечет ее исчезнет индикатор и индикатор кнопки. Я это зделал для того чтобы небыло визуального шума на экране, если игрок близко к обьекту мы отключаем все индикаторы.


Implementation theory

 


21 просмотр0 комментариев

Недавние посты

Смотреть все

Comentarios


bottom of page