Простой способ высчитать угол для разных хит реакций

Продолжаю цикл небольших заметок по работе с blueprints

Вычесляем угол между персонажами- что бы определить с какой стороны стоит противник ( это делаем у того по кому мы бьем)

Простой способ высчитать угол для разных хит реакций

Эта связка нод вычисляет относительный угол, под которым удар пришёлся по вашему персонажу. Она отвечает на вопрос: "Удар был спереди, сзади, слева или справа?"

Пошаговая работа

  1. Сбор позиций:
  • Get Actor Location (от self): Получаем позицию вашего персонажа.
  • Get Actor Location (от Actor): Получаем позицию того, кто ударил.
  1. Направление на врага:
  • Нода Find Look At Rotation берёт эти две позиции и вычисляет, куда нужно было бы посмотреть вашему персонажу, чтобы его взгляд был направлен точно на атакующего.
  1. Сравнение направлений:
  • Нода Delta (Rotator) выполняет ключевое действие. Она берёт текущий поворот персонажа (куда он смотрит сейчас) и вычисленный поворот в сторону врага.
  • На выходе она даёт разницу между этими двумя направлениями. Эта разница и есть тот самый относительный угол удара.

Проще говоря, эта логика переводит информацию из "враг стоит в точке X" в "враг стоит у меня за спиной".

просто рисунок положения в пространстве двух акторов 
просто рисунок положения в пространстве двух акторов 

Дальше задаем систему проверок вот таким способом

Простой способ высчитать угол для разных хит реакций

Берем значение и delta Rotator и тащим в in Range (Float)

Вот как он работает:

  1. Проверка "Спереди": Сначала код проверяет, находится ли входящий угол в диапазоне от -45 до 45 градусов. Если да, исполнение идёт по верхней ветке "Front".
  • -45 это у нас лево , 45 право
  1. Проверка "Справа": Если нет, то проверяется диапазон от 45 до 135 градусов для определения направления "Right".
Простой способ высчитать угол для разных хит реакций
  1. Проверка "Сзади": Если предыдущие проверки не прошли, код проверяет сразу два диапазона: от 135 до 180 градусов ИЛИ от -135 до -180 градусов. Нода OR объединяет эти две проверки. Если угол попадает в любой из этих секторов, считается,- что направление "Back".
  2. Проверка "Слева": Если ни одно из вышеперечисленных условий не выполнилось, последней идёт проверка на диапазон от -135 до -45 градусов для направления "Left".
  1. Проверка "Сзади": Если предыдущие проверки не прошли, код проверяет сразу два диапазона: от 135 до 180 градусов ИЛИ от -135 до -180 градусов. Нода OR объединяет эти две проверки. Если угол попадает в любой из этих секторов, считается,- что направление "Back".
  2. Проверка "Слева": Если ни одно из вышеперечисленных условий не выполнилось, последней идёт проверка на диапазон от -135 до -45 градусов для направления "Left".

Кратко: Это цепочка проверок "если... иначе если...", которая определяет, в какой из четырёх секторов (вперёд, назад, вправо, влево) попадает заданный угол.

И в зависимости от того с какого угла прилетело))) можно проиграть нужную нам анимацию

Мой телеграмм канал об unreal и анимации

9
2
1
7 комментариев