记录一下unity中的一些学习:两点距离,向量夹角角度,向量旋转后的新向量
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class distanceTest : MonoBehaviour {
public float distance; //记录两点之间距离
public Transform p11; //点1
public Transform p12;
public Transform p21;
public Transform p22;
Vector3 vector1 = Vector3.zero; //向量1:P11到P12
Vector3 vector2 = Vector3.zero;
public float angle = 0.0f; //记录向量之间的角度
//v逆时针旋转α
//x0 = K(x* cosα - y* sinα)
//y0 = K(x* sinα + y* cosα)
public float α; //旋转角度
Vector3 vectorNew = Vector3.zero; //旋转后的新向量
public Transform transObj = null; //设置对象到新的位置
float arcAngle = 0.0f;
//说明:转换成二维的。y轴不变
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
//两点之间的距离
distance = Vector3.Distance(p11.position, p12.position);
//两个向量之间的角度
vector1 = p12.position - p11.position;
vector2 = p22.position - p21.position;
angle = Vector3.Angle(vector1, vector2); //0-180度
//向量旋转一定角度(逆时针旋转)所得新向量
//向量vector1旋转α度(0-360度)后新的向量, z代替y
arcAngle = α * 3.14f / 180.0f; //角度换算成弧度
vectorNew = new Vector3(vector1.x * Mathf.Cos(arcAngle) - vector1.z * Mathf.Sin(arcAngle),
0,
vector1.x * Mathf.Sin(arcAngle) + vector1.z * Mathf.Cos(arcAngle));
transObj.position = vectorNew.normalized * 10.0f; //将该对象的坐标设置成新向量乘10的位置
}
}