Rotate 欧拉角旋转
1.Transform.Rotate(float xAngle, float yAngle, float zAngle);每一帧都绕自身坐标轴的X轴、Y轴、Z轴旋转x度、y度、z度。
void Update ()
{this.transform.Rotate(0f, 0f, 2f);//每一帧绕自身坐标轴Z轴旋转2度
}
2.Transform.Rotate(Vector3 axis, float angle, Space relativeTo);
Vector3 axis:轴旋转,以x轴、y轴、z轴旋转
angle:每一帧旋转角度
Space relativeTo:空间相对性,自身或世界坐标系
void Update ()
{this.transform.Rotate(new Vector3(0, 0, 1f), 2f, Space.Self);//每一帧绕自身坐标轴Z轴旋转2度
}
3.Transform.Rotate(Vector3 eulerAngles);
void Update ()
{this.transform.Rotate(new Vector3(0,0,1f));//已自身坐标轴Z轴为旋转轴,每一帧旋转1度
}
以下几种同1、2、3相似:
Transform.Rotate(Vector3 axis, float angle);
Transform.Rotate(Vector3 eulerAngles, Space relativeTo);
Transform.Rotate(float xAngle, float yAngle, float zAngle);
Transform.Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo);
RotateAround 一个物体围绕另一个物体旋转
Transform.RotateAround(Vector3 point, Vector3 axis, float angle);
Vector3 point:被围绕的点
Vector3 axis:旋转所围绕的轴,如X轴、Y轴、Z轴。例围绕Y轴旋转,New Vector3(0,1f,0);或Vector3.up。
float angle:每一帧旋转的角度
void Update ()
{this.transform.RotateAround(new Vector3(0, 0, 0), Vector3.forward, 2f);//该物体围绕(0, 0, 0)点以Z轴为旋转轴,每一帧旋转2度,半径是物体到(0, 0, 0)点的距离
}
eulerAngles和localEulerAngles
eulerAngles:世界坐标系中以欧拉角表示的旋转
localEulerAngle:父对象局部坐标系中的欧拉角
直接设置旋转角度
this.transform.eulerAngles = new Vector3(0, 0, 60f);
慢慢旋转至某一角度
void Update ()
{float speed=10f;this.transform.eulerAngles = Vector3.MoveTowards(this.transform.eulerAngles, new Vector3(0, 0, 60f), Time.deltaTime * speed);
}
rotation和localRotation
rotation:世界坐标系中以四元数表示的旋转
localRotation:父对象局部坐标系中以四元数表示的旋转
直接设置旋转角度
this.transform.rotation = Quaternion.Euler(new Vector3(0, 0, 60f));
慢慢旋转至某一角度
void Update ()
{ float speed=10f; this.transform.rotation = Quaternion.RotateTowards(this.transform.rotation, Quaternion.Euler(new Vector3(0, 0, 60f)), Time.deltaTime * speed);
}