Unity中对物体简单的旋转

修改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);
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44611096/article/details/107937271
今日推荐