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 функция.