对向量的处理,在控制板显示出按钮42
得到两个向量的夹角
Vector3 v1 =newVector3(0, 0, 2);
Vector3 v2 =newVector3(2, 0, 2);
float degrees =Vector3.Angle(v1, v2);
Debug.Log(degrees);
限制向量的长度不超过2
Vector3 v3 =Vector3.ClampMagnitude(v2, 2);
Debug.Log(v3);
两个向量的距离
float distance =Vector3.Distance(v1, v2);
Debug.Log("距离:" + distance);
得到两个向量之间的插值
Vector3 v4 =newVector3(8, 0, 0);
Debug.Log("lerp" +Vector3.Lerp(v4, v2, 0.25f));
sqrMagnitude 得到向量的平方和
magnitude 将三个坐标的平方和再开平方
Debug.Log(Vector3.one*5) 表示三个坐标值都为5
向量的相减:
Vector3 v3 =newVector3(2, 5, 9);
Vector3 v4 =newVector3(1, 1, 1);
Vector3 result = v3 - v4;
Debug.Log("result" + result);
点乘
Vector3 v1 =newVector3(2, 0, 0);
Vector3 v2 =newVector3(2, 0, 2);
float dotValue =Vector3.Dot(v1, v2);
Debug.Log("点乘的结果:" + dotValue);
求Cos角度:
float temp = dotValue / (v1.magnitude *v2.magnitude); ;
float aCosTemo =Mathf.Acos(temp);
Debug.Log(aCosTemo +"**"); 得到角度的Cos值
float degrees =Mathf.Rad2Deg* aCosTemo;
Debug.Log(degrees); 得到角的大小
叉乘 得到的也是一个向量 而且是法向量
Vector3 v1 =newVector3(4, 6, 3);
Vector3 v2 =newVector3(5, 4, 2);
Vector3 ret =Vector3.Cross(v1, v2);
Debug.Log(ret);
数学知识:求x坐标是用Y坐标值和z坐标值 正序减逆序
设置按钮控制物体的旋转
void OnGUI()
{
if (GUI.Button(newRect(20, 20, 100, 80), "Q_X"))
{
Quaternion q =Quaternion.identity;
q.eulerAngles = newVector3(30, 0, 0);
transform.rotation = q *transform.rotation; 四元数
}
得到两排按钮分别控制物体沿X,Y,Z的旋转
if (GUI.Button(newRect(20, 105, 100, 80), "Q_Y"))
{
Quaternion q =Quaternion.identity;
q.eulerAngles = newVector3(0, 30, 0);
transform.rotation = q *transform.rotation;
}
if (GUI.Button(newRect(20, 190, 100, 80), "Q_Z"))
{
Quaternion q =Quaternion.identity;
q.eulerAngles = newVector3(0, 0, 30);
transform.rotation = q *transform.rotation;
}
if (GUI.Button(newRect(125, 20, 100, 80), "V_X"))
{
transform.eulerAngles +=newVector3(30, 0, 0);
}
if (GUI.Button(newRect(125, 105, 100, 80), "V_Y"))
{
transform.eulerAngles +=newVector3(0, 30, 0);
}
if (GUI.Button(newRect(125, 190, 100, 80), "V_Z"))
{
transform.eulerAngles +=newVector3(0, 0, 30);
}
}
圆球移动到结束位置
player.transform.position=Vector3.MoveTowards(start.transform.position,end.transform.position,0.1f);
模仿太阳升起,小球走的是曲线
Vector3 center = (start.transform.position +end.transform.position) / 2;
Vector3 startCenter = start.transform.position -center;
Vector3 endCenter = end.transform.position - center;
Vector3.Slerp(startCenter, endCenter, (Time.time - startTime) / 5) ;
player.transform.position += center;