Transform角度和旋转

1、角度相关

// 相对世界坐标的角度

this.transform.eulerAngles

(与Inpector界面显示的相同,this.transform.rotation是四元数,显示的不一样)

// 相对于父对象的角度

this.transform.localEulerAngles

// 注意:

(1)设置角度与设置位置一样,不能单独设置xyz,要一起设置。如果希望改变的角度是Inpector界面显示的内容,一定是改变相对父对象的角度

(2)即使Inspector面板上显示的是负数,通过以上方法得到的角度都是正数,范围是0~360

2、旋转相关

// 方式一:自己计算,和位置一样,不停改变角度即可

// 方式二:API计算

// 自转

// 每个轴具体转多少度

// 参数一:每个轴每一帧旋转的角度

// 参数二:默认不填,相对于自己坐标系进行旋转

this.transform.Rotate(new Vector3(0, 5, 0) * speed * Time.deltaTime)

// 相对于某个轴转多少度

// 参数一:相对那个轴进行转动

// 参数二:转动的角度

// 参数三:默认不填就是相对于自己的坐标系进行旋转

this.transform.Rotate(Vector.up, speed * Time.deltaTime);

// 相对于某一个点转

// 参数一:相对于哪个点旋转

// 参数二:相对于点的哪个轴旋转

// 参数三:旋转度数,速度*时间

this.transform.RotateAround(Vector3.zero, Vector3,up, speed * Time.deltaTime);

在模拟太阳、地球和月亮的旋转关系的时候,一开始并没有将月亮作为地球的子对象,会发现月亮旋转的半径会很异常,这是因为RoateAround旋转半径以每一帧两点的距离为准,当月亮和地球没有父子关系的时候,打印两者的距离是变化的,设定关系后两者相对距离不变,可以正常旋转,因此,当使用RotateAround绕某点旋转且该点坐标在变化的时候,将两者设定为父子关系

你可能感兴趣的:(Unity学习,#,Unity初级,unity)