Unity的一些小方法

356 阅读1分钟

 二维向量和三维向量

Vector3 a = new Vector3(1f, 1f, 1f);
Vector2 b = new Vector2(1f, 1f);

向量标准化成单位向量的API: “  .normalized ”

Vector3 a = new Vector3(4f, 3f, 0f);
Vector3 b = a.normalized;
Debug.Log("标准化后=" + b.ToString("F3"));//显示三位小数

向量的静态常量

 Vector3 a = Vector3.right;//Vector3(1, 0, 0);
 Vector3 a = Vector3.up; //Vector3(0, 1, 0);
 Vector3 a = Vector3.forward;//Vector3(0, 0, 1);

向量加、减、点乘和叉乘

//Vector3 c = a + b;
//Vector3 c = a - b;
c = Vector3.Dot(a, b);
c = Vector3.Cross(a, b);

向量相减得到新的向量,求长度能得到两个对象的距离的API:“ .normalized ”

 GameObject target = GameObject.Find("Target file");
 Vector3 Position1 = target.transform.position;
 Vector3 Position2 = this.transform.position;
 Vector3 Direction = Position1 - Position2;
  // _ = Vector3.Distance(Position1, Position2);
 Debug.Log("Direction=" + Direction.magnitude);

向量夹角运算,求两个向量的夹角的API:” .SignedAngle(a, b, Vector3.forward) “

Vector3 a = new Vector3(4f, 3f, 1f);
Vector3 b = new Vector3(-2f, 5f, 7f);
float Angle = Vector3.SignedAngle(a, b, Vector3.forward);
//(向量a,向量b,向量c)从ab之间以c为轴
Debug.Log("从向量ab以Z轴(0,0,1)forward为轴的夹角=" + Angle);

使用向量旋转将物体朝向某一物体,position2物体指向position1物体,

API: ” 。Rotate() “

GameObject target = GameObject.Find("Target file");
Vector3 Position1 = target.transform.position;
Vector3 Position2 = this.transform.position;

float Angle = Vector3.SignedAngle(Position1, Position2, Vector3.forward);
//(Position1向量,Position2向量,轴向量)从Position1到Position2之间以Vector3.forward为轴

this.transform.Rotate(0,0,Angle);
//输入x,y,z轴需要旋转的欧拉角

通过: ” .WorldToScreenPoint(Target); “ 来获取Target在主摄像机下(屏幕上)的坐标(像素)

Vector3 Target = this.transform.position;
Vector3 Screenpos = Camera.main.WorldToScreenPoint(Target);
Debug.Log("对象在屏幕上的坐标="+Screenpos);//显示的值是像素