using UnityEngine;
using System.Collections;
public class JarodMathTools : MonoBehaviour {
public static JarodMathTools Static;
// Use this for initialization
private Transform transformOffset;
void Start () {
Static = this;
transformOffset = transform.GetChild (0);
}
// Update is called once per frame
void Update () {
}
//根据起点和终点,得到方向单位向量
public Vector3 getVector3(Vector3 beginPosition,Vector3 targetPosition)
{
return (beginPosition - targetPosition).normalized;
}
//根据起点和终点,得到欧拉角
public Vector3 getEulerAngle(Vector3 beginPosition,Vector3 targetPosition)
{
Quaternion q4 = Quaternion.LookRotation (beginPosition - targetPosition);
return q4.eulerAngles;
}
//根据向量,得到欧拉角
public Vector3 getEulerAngle(Vector3 dir)
{
Quaternion q4 = Quaternion.LookRotation (dir);
return q4.eulerAngles;
}
//根据起点和终点,得到四元数
public Quaternion getQuaternion(Vector3 beginPosition,Vector3 targetPosition)
{
return Quaternion.LookRotation(beginPosition - targetPosition);
}
//根据向量返回四元数
public Quaternion getQuaternion(Vector3 dir)
{
return Quaternion.LookRotation (dir);
}
//根据四元数,返回单位方向向量
public Vector3 getVector3(Quaternion q4)
{
transform.rotation = q4;
return transform.forward;
}
//根据欧拉角度,返回单位向量
public Vector3 getVector3(float xP,float yP,float zP)
{
Quaternion q4 = Quaternion.Euler(new Vector3(xP,yP,zP));
transform.rotation = q4;
return transform.forward;
}
//根据欧拉角度,返回单位向量
public Vector3 getVector3(Vector3 eulerAngle)
{
transform.rotation = Quaternion.Euler (eulerAngle);
return transform.forward;
}
//得到X轴的角度
public float getEulerAngleX(Transform trans)
{
return trans.rotation.x;
}
//得到Y轴的角度
public float getEulerAngleY(Transform trans)
{
return trans.rotation.y;
}
//得到Z轴的角度
public float getEulerAngleZ(Transform trans)
{
return trans.rotation.z;
}
//求单位向量
public Vector3 getUnitVector3(Vector3 vec)
{
return vec.normalized;
}
//获取单位速度
public Vector3 getVector3(Vector3 vec,float moveSpeed)
{
return vec * moveSpeed;
}
//得到反方向的向量
public Vector3 getOppositeVector3(Vector3 vec)
{
return Vector3.zero - vec;
}
//得到偏移X轴后,新的向量
public Vector3 getVector3OffsetX(Vector3 dir,float xP)
{
Quaternion q4 = Quaternion.LookRotation (dir);
Vector3 eulerAngle = q4.eulerAngles;
eulerAngle.x += xP;
transform.rotation = Quaternion.Euler (eulerAngle);
return transform.forward;
}
//得到偏移Y轴后,新的向量
public Vector3 getVector3OffsetY(Vector3 dir,float yP)
{
Quaternion q4 = Quaternion.LookRotation (dir);
Vector3 eulerAngle = q4.eulerAngles;
eulerAngle.y += yP;
transform.rotation = Quaternion.Euler (eulerAngle);
return transform.forward;
}
//得到偏移Z轴后,新的向量
public Vector3 getVector3OffsetZ(Vector3 dir,float zP)
{
Quaternion q4 = Quaternion.LookRotation (dir);
Vector3 eulerAngle = q4.eulerAngles;
eulerAngle.z += zP;
transform.rotation = Quaternion.Euler (eulerAngle);
return transform.forward;
}
//得到模型相对 (0,0,0)点的 位置,在模型旋转后,原本的位置,新的位置
public Vector3 getPositionOffset(Vector3 position,float xAngle,float yAngle,float zAngle)
{
transformOffset.localPosition = position;
transform.rotation = Quaternion.Euler(new Vector3(xAngle,yAngle,zAngle));
return transformOffset.position;
}
//得到某一点,旋转后的位置
public Vector3 getPositionOffset(Vector3 position,Quaternion q4)
{
transformOffset.localPosition = position;
transform.rotation = q4;
return transformOffset.position;
}
}