UnityAPI的学习——Vector3类

Vector3类属于结构体类型,用来表示Unity中的三维向量或三维坐标点

Vector3类实例属性

在Vector3类中,涉及的实例属性有normalized属性和sqrMagnitude属性

normalized属性:单位化向量

基本语法

public Vector3 normalized{ get; }

功能说明
此属性用来获取Vector3实例的单位向量,即返回向量的方向与原向量方向相同,而模长变为1

sqrMagnitude属性:模长平方

基本语法

此属性用于返回Vector3实例模长的平方值

Vector3类实例方法

在Vector3类中涉及的实例方法只有Scale方法,由于Vector3的静态方法Scale与实例方法scale的功能相近。

Scale方法:向量放缩

基本语法

public void Scale(Vector3 scale);
其中参数scale的参考向量

功能说明
此方法可以对Vector3实例按参考向量scale进行放缩

Vector3类静态方法

在Vector3类中,静态方法有Angle方法、ClampMagnitude方法、Cross方法、Dot方法、Lerp方法、MoveTowards方法、OrthoNormalize方法、Project方法、RotateTowards方法、Scale方法、Slerp方法和SmoothDamp方法。

Angle方法:求两个向量夹角

基本语法

public static float Angle(Vector3 from ,Vector3 to);

功能说明
此方法用于返回向量from和to的夹角,单位为角度,返回值的范围为[0,180],且当from和to中至少有一个味Vector.zero时,方法返回值为90

ClampMagnitude方法:向量长度

基本语法

public static Vector3 ClampMagnitude(Vector3 vector ,float maxLength);

功能说明
此方法用于返回向量vector的一个同方向向量,其模长受maxLength的限制。
1、返回向量的方向与vector方向相同
2、当maxLength大于vector的模长时,返回向量与vector相同
3、当maxLength小于vector的模长时,返回向量的模长等于maxLength,但方向与vector相同。

Cross方法:向量叉乘

基本语法

public static Vector3 Cross(Vector3 lhs , Vector3 rhs);

功能说明:此方法用于两个向量的叉乘

Dot方法:向量点乘

基本语法

public static float Dot(Vector3 lhs ,Vector3 rhs)

功能说明
此方法用于返回参数lhs和rhs的点乘。

Lerp方法:向量插值

基本语法

public static Vector3 Lerp(Vector3 from ,Vector3 to ,float t);
其中参数from为插值起始点坐标,参数to为插值结束点坐标,参数t为插值系数

功能说明
此方法用于返回一个从参数from到to的线性插值向量。

MoveTowards方法:向量插值

基本语法

public static Vector3 MoveTowards(Vector3 current ,Vector3 target ,float maxDistanceDelta);

功能说明
此方法用于返回一个从参数current到参数target的插值向量

OrthoNormalize方法:两个坐标轴的正交化

基本语法

public static void OrthoNormalize(ref Vector3 normal ,ref Vector3 tangent);

功能说明
此方法用于对向量normal进行单位化处理,并对向量tangent进行正交化处理

OrthoNormalize方法:3个坐标轴的正交化

基本语法

public static void OrthoNormalize(ref Vector3 normal ,ref Vector3 tangent ,ref Vector3 binormal);

功能说明
此方法用于对向量normal进行单位化处理,并对向量tangent和binnormal进行正交化处理

Project方法:投影向量

基本语法

public static Vector3 Project(Vector3 vector, Vector3 onNormal);

功能说明:此方法用于返回向量vector在向量onNormal的投影向量

Reflect方法:反射向量

基本语法

public static Vector3 Reflect(Vector3 inDirection ,Vector3 inNormal);
其中参数inDirection为入射向量,参数inNormal为镜面向量

功能说明
此方法用于返回向量inDirection的反射向量
1、参数inNormal向量必须为单位向量,否则入射角和反射角不相等
2、当inNormal取反时,反射向量不受影响
3、入射向量、反射向量和镜面向量共面

RotateToward方法:球形插值

基本语法

public static Vector3 RotateTowards(Vector3 current ,Vector3 target,float maxRadiansDelta,float maxMagnitudeDelta);
其中参数current为起始点坐标,参数target为目标点坐标,参数maxRadiansDelta为角度旋转系数,参数maxMagnitudeDelta为模长系数

功能说明
此方法用于返回参数current到target的球形旋转插值向量,此方法可控制插值向量的角度和模长

Scale方法:向量放缩

基本语法

public static Vector3 Scale(Vector3 a ,Vector3 b);

功能说明
此方法用于返回向量a和b的乘积

Slerp方法:球形插值

基本语法

public static Vector3 Slerp(Vector3 from,Vector3 to ,float t);
其中参数from为插值起始点坐标,参数to为插值结束点坐标,参数t为插值系数。

功能说明:此方法用于返回从参数from点到参数to点的球形插值向量

SmoothDamp方法:阻尼移动

基本语法

1public static Vector3 SmoothDamp(Vector3 current ,Vector3 target,ref Vector3 currentVelocity ,float smoothTime);
2public static Vector3 SmoothDamp(Vector3 current ,Vector3 target,ref Vector3 currentVelocity, float smoothTime ,float maxSpeed);
3public static Vector3 SmoothDamp(Vector3 current ,Vector3 target , ref Vector3 currentVelocity ,float smoothTime ,float maxSpeed,float deltaTime);
其中参数current为起点坐标,参数target为终点坐标,参数currentVelocity为当前帧移动向量,参数smoothTime为接近目标时的阻尼强度,参数maxSpeed为最大移动速度,默认值为无穷大,参数deltaTime为控制当前帧实际移动的距离,即为maxSpeed*deltaTime,默认值为Time.deltaTime。

Vector3类运算符

在Vector3类中,涉及的运算符主要有相等(“==”)运算符

operator == (lhs:Vector3 ,rhs:Vector3)

功能说明:此运算符用于判断向量lhs和rhs是否足够接近或相等。

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Unity中,Quaternion可以通过转换为Vector3来表示旋转角度。具体方法如下: 1. 使用Quaternion的eulerAngles属性,将Quaternion转换为Vector3: ``` Quaternion rotation = Quaternion.identity; Vector3 eulerAngle = rotation.eulerAngles; ``` 2. 使用Quaternion的*运算符,将Quaternion与Vector3相乘,得到旋转后的向量: ``` Quaternion rotation = Quaternion.identity; Vector3 vector = new Vector3(1, 0, 0); Vector3 rotatedVector = rotation * vector; ``` 这将返回一个旋转后的向量,其方向和大小取决于原始向量和旋转角度。 ### 回答2: Unity中的Quaternion表示三维空间中的旋转,而Vector3表示三维空间中的位置。 在将Quaternion转换为Vector3之前,需要先理解Quaternion的含义。Quaternion由四个分量表示,即x、y、z和w。其中,x、y和z表示旋转轴的方向,w表示旋转轴的角度。 要将Quaternion转换为Vector3,可以使用Quaternion的eulerAngles属性,即将Quaternion转换为欧拉角,然后再将欧拉角转换为Vector3。 具体操作如下: 1.首先,将Quaternion转换为欧拉角。可以使用Quaternion的eulerAngles属性,将Quaternion对象转换为Vector3对象。例如,如果有一个名为rotation的Quaternion对象,可以使用rotation.eulerAngles得到其欧拉角表示。 2.然后,将欧拉角转换为Vector3。欧拉角的x、y和z分量分别对应Vector3的x、y和z分量,可以直接将欧拉角的x、y和z值分别赋给Vector3的x、y和z属性。 下面是具体的实现例子: Quaternion rotation = Quaternion.Euler(30, 45, 60); // 示例Quaternion对象 Vector3 euler = rotation.eulerAngles; // 将Quaternion转换为Vector3的欧拉角表示 Vector3 vector = new Vector3(euler.x, euler.y, euler.z); // 将欧拉角转换为Vector3 以上是将Quaternion转换为Vector3的基本方法,可以根据实际需求进行适当的调整和扩展。 需要注意的是,Quaternion和Vector3表示的是不同的信息,Quaternion表示旋转,而Vector3表示位置。所以在使用Quaternion转换为Vector3时需要确保其转换的意义和目的。 ### 回答3: 在Unity中,Quaternion型表示了3D旋转的方式,而Vector3型表示了3D空间中的一个点的位置。有时候我们需要将一个Quaternion转换为一个Vector3,以便于通过向量的方式表示出旋转后的方向。 在将Quaternion转换为Vector3时,可以使用Quaternion型的eulerAngles属性,该属性返回一个旋转角度的Vector3表示。具体的代码如下: ``` Quaternion rotation = // 获取到的Quaternion值 Vector3 euler = rotation.eulerAngles; ``` 这样,我们就可以获取到了Quaternion旋转后的欧拉角表示,进而将其转换为Vector3。 需要注意的是,Quaternion旋转后的欧拉角表示有一个限制,即在180度旋转时,可能存在连续性的问题,即两个角度表示相同的旋转结果。为了避免这种情况,有时候我们需要对欧拉角进行额外的处理。 在一些特定的场景下,Quaternion转换为Vector3的意义可能会有所差异,具体的转换方式和处理方式也可能有所不同。因此,在实际应用中,根据具体的需求和场景进行适当的调整和处理,以确保转换结果的准确性和符合预期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值