Індикатори на екрані важлива частина напевно кожної гри, приймайте це як стандарт ігрової індустрії, якщо ми говоримо про ААА ігри то вам необхідна ця механіка. Індикатор на екрані позначають гравця про можливі дії, які йому доступні, в першу чергу сповістити його про взаємодію з ігровим об'єктом, так само може бути і якщо гравець загубився в ігровому середовищі, позначення ворогів і т.д.
Візьмемо такі ігри як
Uncharted
Tomb Rider Lara Croft
Last of Us
Перш ніж приступати до розробки, моє дослідження було на цих трьох іграх
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
Comments