No Image

Unity угол между векторами

СОДЕРЖАНИЕ
793 просмотров
10 марта 2020

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста попробуйте снова через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Функция отражения векторов в Unity (C#):

Данная функция возвращает вектор, значение компонентов которого равны отражению вектора inDirection в плоскости с нормалью inNormal.
Пример:

В данном случае reflectObject будет «отражением» объекта, на котором висит скрипт. «Зеркалом» будет плоскость OXY (т. к. ось Z является нормалью данной плоскости).

Расстояние

Для нахождения расстояния между двумя точками в Unity есть функция:

Использовать можно, например, для проверки возможности атаки.

Проекция

Функция проекции в Unity (C#):

Возвращает проекцию вектора a на вектор b.
Для чего может пригодиться?
Пример:
Летит самолёт скинуть груз на остров, мы знаем скорость самолёта, его координаты, знаем координаты острова. Нам нужно рассчитать время, через которое самолёт долетит.
Формула расчёта: время = расстояние/скорость. Скорость мы знаем, расстояние можем найти функцией Vector3.Distance, но. Самолёт выше острова и ему не требуется приземляться, чтобы скинут груз, поэтому рассчитанное время будет больше, чем на самом деле, т. к. будет учитываться высота. Для избежания этой проблемы можно использовать проекцию, в этом случае разницы в высоте не будет, и можно спокойно измерить расстояние, которое самолёт пролетит.

Функция для получения угла между векторами в Unity (C#):

Можно использовать для проверки, находится ли объект в поле видимости:

Читайте также:  Как подключить стилус к планшету хуавей

Можно ли вычислить фактический угол между двумя 3D-векторами в единстве? Vector3.Angle дает самый короткий угол между двумя векторами. Я хочу знать фактический угол, рассчитанный по часовой стрелке.

Это должно быть то, что вам нужно. a и b – векторы, для которых вы хотите вычислить угол, n будет нормалью вашего самолета, чтобы определить, что вы бы назвали "по часовой стрелке/против часовой стрелки"

Для простоты я повторно использую Vector3.Angle , а затем вычисляю знак от величины угла между плоской нормалью n и поперечным произведением (перпендикулярным вектором) a и b .

Это просто, если вы просто используете сложение и вычитание. Посмотрите на это:

Вот что я имею в виду: если мы по часовой стрелке, а угол отрицательный, например. -170 Чтобы сделать это 180, вы используете это уравнение. "180- | угол | +180" вы уже знаете, что угол отрицательный, поэтому используйте "180 – (- угол) +180" и добавьте 180 "360 + угол". Затем, если он по часовой стрелке, ПРОДОЛЖИТЬ, но если он против часовой стрелки, сделайте угол отрицательным, это связано с тем, что другая часть угла 360 (что является дополнением 360 + угол) составляет "360 – (360 + угол)" или "360 – 360 – угол" ИЛИ "(360 – 360) – угол" и, опять же, ИЛИ "- угол". Итак, мы идем. ваш готовый угол.

Комментировать
793 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector