修改Transform组件中的Rotation属性的值,即可进行简单的旋转
下面通过C#脚本进行旋转
(轴指向我们眼睛时,角度顺时针方向增大)
前两种方式是相对于物体的Rotation值是(0,0,0)的情况进行旋转
最后一种方式是相对于物体当前的Rotation值进行旋转
方式一:使用Quaternion.AngleAxis函数
第一个参数代表旋转角度
第二个参数代表旋转轴
返回一个Quaternion类型的变量(四元数)
示例 绕z轴旋转45度:
this.transform.rotation = Quaternion.AngleAxis(45, Vector3.forward);
Vector3.forward表示(0,0,1)向量,即z轴
方式二:使用Quaternion.Euler函数
三个参数分别代表绕x,y,z轴旋转的角度
返回一个Quaternion类型的变量(四元数)
示例 水平且垂直翻转:
this.transform.rotation = Quaternion.Euler(180, 180, 0);
注意在2D游戏中,摄像头的方向一般是Z轴的方向,所以对于绕Z轴旋转时,如果我们要将屏幕上的物体旋转,角度则是逆时针方向增大
方式三:使用Rotate函数
Rotate函数有多种重载:
一种是绕某一轴旋转几度
另一种是对于x轴y轴z轴各自的旋转角度:
参数是一个向量和3个浮点值意思一样
最后一个参数Space是旋转时相对的坐标系。值为self时(默认),相对于本地坐标系;值为word时,相对于世界坐标系。
(将以下代码挂载到Cube上。图中绿色的轴为Y轴)
示例 相对于世界坐标系旋转:
public class TestRotation : MonoBehaviour
{
private void Update()
{
this.transform.Rotate(0, 1, 0, Space.World);
}
}
示例 相对于本地坐标系旋转:
public class TestRotation : MonoBehaviour
{
private void Update()
{
this.transform.Rotate(0, 1, 0, Space.Self);
}
}