Unity基础(0)—— Vector3的简单使用

1. Vector 表示向量、矢量的意思,含有大小和方向;Vector3 由名可得表示三维向量,包含想 x, y, z 三个分量(供自学记录)。

2.简单理解Vector3就是相当于一个类,可直接new. 其中xyz三维坐标系可参考左手坐标系(拇指指向自己方向)。一般在使用中transform下的position、scale、rotation等属性都可以通过设置Vector3的值来改变其相应的位置、大小(transform详见下篇)。

public class Test : MonoBehaviour {
    // 初始化
    void Start () {
        Vector3 v = new Vector3 ();
        float x = v.x;
        float y = v.y;
        float z = v.z;
        // 获取 V 的单位向量
        // V 的长度会变为 1 但⽅向不变
        v.Normalize ();
        // 返回 V ⽅向上的单位向量,但是 V本⾝不会发⽣变化
        v.normalized;
        // 获取 V 的长度
        float l = v.magnitude;      
        // x = 0,y = 1, z = 0
        Vector3.up;         //  表⽰世界坐标系中 Y 轴正⽅向上的单位向量
        // x = 0,y = -1, z = 0
        Vector3.down;       //  表⽰世界坐标系中 Y 轴负⽅向上的单位向量
        // x = -1,y = 0, z = 0
        Vector3.left;       //  表⽰世界坐标系中 X 轴负⽅向上的单位向量
        // x = 1,y = 0, z = 0
        Vector3.right;      //  表⽰世界坐标系中 X 轴正⽅向上的单位向量
        // x = 0,y = 0, z = 1
        Vector3.forward;    //  表⽰世界坐标系中 Z 轴正⽅向上的单位向量
        // x = 0,y = 0, z = -1
        Vector3.back;       //  表⽰世界坐标系中 Z 轴负⽅向上的单位向量
        Vector3.zero;       //  表⽰原点
        Vector3 v1 = new Vector3 (1.5f, 1.0f, 1.0f);
        Vector3 v2 = new Vector3 (1.0f, 1.5f, 1.5f);
        // 两个向量间的夹⾓
        float angle = Vector3.Angle (v1, v2);
        Vector3 pos1 = new Vector3 (4.0f, 2.0f, 1.0f);
        Vector3 pos2 = new Vector3 (2.0f, 4.0f, 1.0f);
        // 获取两个点之间的距离
        float distance = Vector3.Distance(pos1, pos2);
        // 向量的点乘
        float dd = Vector3.Dot (v1, v2);
        // 向量叉乘
        Vector3 vc = Vector3.Cross (v1, v2);    
    }
    
    void Update () {
    }
}

3.其他方法

Vector3.MoveTowards()  移动到目标位置

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

  • 函数的返回值是一个点,以maxdistancedelta为单位速度沿着当前的和目标之间的线接近目标点
  • 移动不会超过目标。当maxdistancedelta为负值时,可以用来从目标推开该向量

Vector3.Project()  在线上的投影

public static Vector3 Project(Vector3 vector, Vector3 onNormal)

  • 求一个向量在另一个向量方向上的投影

Vector3.ProjectOnPlane 在面上的投影

public static Vector3 ProjectOnPlane(Vector3 vector, Vector3 planeNormal)

  • 求一个向量在一个平面上的投影
  • planeNormal参数指的是该平面的法向量

Vector3.PSqrMagnitude  向量的长度平方

  • 用于向量的比较,因为计算机求平方和开方比较消耗内存和时间。

猜你喜欢

转载自blog.csdn.net/weixin_44430126/article/details/125614397
今日推荐