版本: Unity 6 (6000.0)
语言英语
  • C#

Vector3.SignedAngle

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每项建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请 <a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

参数

from 测量角度差的起始向量。
to 测量角度差的终止向量。
axis 其他向量绕其旋转的向量。

返回

float 返回 fromto 之间的有符号角度(以度为单位)。

描述

计算向量 fromto 相对于 axis 的有符号角度。

返回的角度是从第一个向量到第二个向量的旋转角度,将这两个输入向量视为方向。这两个向量也定义了旋转平面,这意味着它们平行于该平面。这意味着围绕其计算角度的旋转轴是第一个向量和第二个向量的 叉积(而不是第三个“轴”参数)。您可以使用 “左手定则” 来确定旋转轴,方法是给出两个输入向量。第三个输入(称为“轴”参数)为您提供了一种方法来提供一个上下文方向以包含在计算中。这将导致结果符号反转,具体取决于您提供的第三个向量是落在第一个向量和第二个向量定义的旋转平面之上还是之下。因此,最终结果的符号取决于两个因素:提供“from”向量和“to”向量的顺序,以及第三个“axis”向量的方向。
注意:返回的角度始终在 -180 度到 180 度之间,因为该方法返回向量之间最小的角度。也就是说,它永远不会返回优角。

using UnityEngine;
using System.Collections;

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 函数。