Unity API Vector向量的使用

Vector2

静态变量

down

(0, -1)

left

(-1, 0)

right

(1, 0)

up

(0, 1)

one

(1, 1)

zero

(0, 0)

变量

magnitude

取得一个向量的长度

normalized

标准化向量,即方向保持不变,长度变为1,不会修改自身

sqrMagnitude

取得向量的平方根,一般用于判断两个向量的长度

this[int]

this[0]表示x,this[1]表示y

x

X值

y

Y值

magnitude

sqrMagnitude

print(Vector2.down); //(0,-1)
print(Vector2.up); //(0,1)
print(Vector2.left); //(-1,0)
print(Vector2.right); //(1,0)
print(Vector2.one); //(1,1)
print(Vector2.zero); //(0,0)

Vector2 a = new Vector2(2, 2); 
Vector2 b = new Vector2(3, 4); 
print(a.magnitude); //2.828427
print(a.sqrMagnitude); //8
print(b.magnitude); //5
print(b.sqrMagnitude); //25
print(a.normalized); //(0.7,0.7)
print(b.normalized); //(0.6,0.8)
print(a.x + "," + a.y); //2,2
a.Normalize();
print(a[0] + "," + a[1]); //0.7071068,0.7071068

向量是结构体,是值类型,要整体赋值

//向量是结构体,是值类型,要整体赋值
transform.position = new Vector3(3, 3, 3);
Vector3 pos = transform.position;
pos.x = 10;
transform.position = pos;

静态方法

Angle

获取两个向量的夹角

ClampMagnitude

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

将向量vector的长度限定在maxLength,如果长度大于maxLength,则vector方向不变,长度设为maxLength

Distance

获取两个向量的距离

Vector2.Distance(a,b)  等同于  (a-b).magnitude.

Dot

点乘

Lerp

插值运算

LerpUnclamped

不限定插值运算

Max

取两个向量长度最大的

Min

取两个向量长度最小的

MoveTowards

当前坐标向目标坐标按一定距离进行移动

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

current:当前坐标

target:目标坐标

maxDistanceDelta:移动距离

方法

Equals

判断两个向量是否相等

Normalize

把向量自身进行单位化,会对这个向量进行修改的

Set

对向量自身进行赋值

Vector2 a = new Vector2(2, 2);
Vector2 b = new Vector2(3, 4);
Vector2 c = new Vector2(3, 0);
print(Vector2.Angle(a, b)); //8.130091
print(Vector2.Angle(a, c)); //45
print(Vector2.ClampMagnitude(c, 2)); //(2.0,0.0)
print(Vector2.Distance(b, c)); //4
print(Vector2.Lerp(a, b, 0.5f));//(2.5, 3)
print(Vector2.LerpUnclamped(a, b, 0.5f));//(2.5, 3)
print(Vector2.Lerp(a, b, 2f));//(3,4)
print(Vector2.LerpUnclamped(a, b, 2f)); //(4,6)
print(Vector2.Max(a, b)); //(3,4)
print(Vector2.Min(a, b)); //(2,2)
public Vector2 a = new Vector2(2, 2);
public Vector2 target = new Vector2(10, 3);
void Update () {
    a = Vector2.MoveTowards(a, target, Time.deltaTime); //1秒运行1米
}

Vector3

静态变量

back

(0, 0, -1)

down

(0, -1, 0)

forward

(0, 0, 1)

left

(-1, 0, 0)

one

(1, 1, 1)

right

(1, 0, 0)

up

(0, 1, 0)

zero

(0, 0, 0)

静态方法

Cross

叉乘运算

a和b叉乘得到向量Result,垂直于ab平面

Distance

取得长度

 

Dot

点乘

 

Lerp

分别对x,y,z进行插值运算

 

Max

取长度最大的向量

 

Min

取长度最小的向量

 

MoveTowards

用来进行移动

由当前位置向目标位置按一定的速度进行移动

Normalize

将自身进行标准化

 

Project

投影

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

Reflect

反射

public static Vector3 Reflect(Vector3 inDirection, Vector3 inNormal);

Slerp

两个向量按照角度进行插值运算

 对向量的加减乘除操作

 

operator -

b – a = a朝向b

operator +

a+b = a向量和b向量首尾相接,然后从原点连接b

operator *

public static Vector3 operator *(Vector3 a, float d);

用来对速度进行加速

operator /

public static Vector3 operator /(Vector3 a, float d);

用来对速度进行减速

operator ==

判断两个向量是否相等

Vector2 a = new Vector2(2, 2);
Vector2 b = new Vector2(3, 4);

Vector2 res = b - a;
print(res);//(1,2)
print(res * 10);//(10,20)
print(res / 5);//(0.2,0.4)
print(a + b);//(5,6)
print(a == b);//flase

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值