Unity 6.3
0 онлайн 78 гостей 3 в системе
Вход

Vector3.SignedAngle

Declaration

public static float SignedAngle(Vector3 from, Vector3 to, Vector3 axis);

Параметры

Параметр Описание
от Вектор, от которого измеряется угловая разница.
до Вектор, по отношению к которому измеряется угловая разница.
оси Контекстное направление для расчетов.

Возвращаемое значение

поплавок Возвращает угол между from и to в градусах.

Описание

Вычисляет знаковый угол между двумя векторами, используя третий вектор для определения знака.

Возвращаемый угол представляет собой угол вращения от первого вектора до второго в плоскости, содержащей оба вектора. Возвращаемый угол находится между -180 и 180 градусов, поскольку метод возвращает наименьший угол между векторами.

Знак угла определяется с помощью оси направления, предоставленной в качестве параметра axis. Направление определяется тем, проецируется ли ось направления на положительную или отрицательную ось вращения. Ось вращения — это вектор, перпендикулярный плоскости вращения. Вы можете использовать перекрестное произведение и для определения оси вращения для двух входных векторов. Если ось направления указывает на ту же сторону плоскости вращения, что и ось вращения, то получаемый угол является положительным. Если ось вращения указывает на противоположное направление оси вращения, то получаемый угол является отрицательным. Обратите внимание, что изменение порядка from и to меняет направление угла вращения.

На следующей диаграмме показаны отношения между входными векторами и осями вращения и направления.


Векторы from и to лежат в синей плоскости. И ось вращения, и ось направления указывают на плоскость вращения, так что в этом случае возвращаемый угол является положительным.

using UnityEngine;

public class ExampleClass : MonoBehaviour { public Transform target;

void Update() { Vector3 targetDir = target.position - transform.position; Vector3 forward = transform.forward; float angle = Vector3.SignedAngle(targetDir, forward, Vector3.up); if (angle < -5.0F) print("turn right"); else if (angle > 5.0F) print("turn left"); else print("forward"); } }

Дополнительные ресурсы: Angle функция.