top of page

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

  • Фото автора: Ростислав Кейван
    Ростислав Кейван
  • 25 июн. 2023 г.
  • 2 мин. чтения

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


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

  • 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



コメント


bottom of page