10. Vector类
10.1 Vector类概述
在开发游戏时,物体是被放置在空间中的,其位置一般用坐标来表示。如下图:
为了集中管理坐标,在 3D 游戏中可以使用 Vector3 类来管理,在 2D 游戏中可以使用 Vector2 类来管理,Vector3 类中,Unity 提供了 x、y、z 成员变量,Vector2 类中,Unity 提供了 x、y 成员变量。对于 Vector 类,我们一般理解为向量。
10.2 Vector类的使用
1.加法运算
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Vct : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Vector2 v = new Vector2(3.0f, 5.0f);
v.x += 7.0f;
v.y += 7.0f;
Debug.Log(v);
}
// Update is called once per frame
void Update()
{
}
}
运行后控制台输出:
(10.0, 12.0)
UnityEngine.Debug:Log(Object)
Vct:Start() (at Assets/Vct.cs:13)
减法运算也是相同的。
2.对象之间的加法运算
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Vct : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Vector2 v1 = new Vector2(3.0f, 5.0f);
Vector2 v2 = new Vector2(7.0f, 8.0f);
Vector2 v3 = v1 + v2;
Debug.Log(v3);
}
// Update is called once per frame
void Update()
{
}
}
运行后控制台输出:
(10.0, 13.0)
UnityEngine.Debug:Log(Object)
Vct:Start() (at Assets/Vct.cs:13)
3.对象之间的减法运算
public class Vct : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Vector2 v1 = new Vector2(3.0f, 5.0f);
Vector2 v2 = new Vector2(7.0f, 8.0f);
Vector2 dir = v1 - v2; // 新的向量
Debug.Log(dir);
float length = dir.magnitude; // 新向量代表的长度
Debug.Log(length);
}
// Update is called once per frame
void Update()
{
}
}
运行后控制台输出:
(-4.0, -3.0)
UnityEngine.Debug:Log(Object)
Vct:Start() (at Assets/Vct.cs:13)
5
UnityEngine.Debug:Log(Object)
Vct:Start() (at Assets/Vct.cs:16)
10.3 Vector类的应用
Vector 类可以表示坐标、向量。还可以表示加速度、力及移动速度等物理方面的数值。例如:
Vector2 speed = new Vector2(2.0f, 0.0f);
PlayPos += speed;
其中 PlayPos 代表一个物体的坐标,在每一帧中执行上面的代码,物体就可以按照指定的速度来移动。