角度

this.transform.rotation(四元数)

界面上的xyz(相对于世界坐标)

this.transform.eulerAngles;

相对于父对象

this.transform.localEulerAngles;

设置角度和设置位置一样,不能单独设置xzy,要一起设置

如果我们希望改变的 角度 是面板上显示的内容 那一点是改变 相对父对象的角度

this.transform.localEulerAngles = new Vector(10,10,10);
this.transform.localEulerAngles = new Vector(10,10,10);

旋转

自转

第一个参数 相当于 是旋转的角度 每一帧

第二个参数 默认不填 就是相对于自己坐标系 进行的旋转

void Update(){
    //绕着Y轴转,相对于自己的坐标系
    this.transform.Rotate(new Vector3(0, 10,0) * Time.daltaTime);
    //绕着世界坐标的Y轴转
    this.transform.Rotate(new Vector3(0, 10,0) * Time.daltaTime,Space.World);
}

相对于某一个轴 转多少度

参数一:是相对哪个轴进行转动

参数二:是转动的 角度 是多少

参数三:默认不填 就是相对于自己的坐标系 进行旋转
// 如果填 可以填写相对于 世界坐标系进行旋转

void Update(){
    //绕着自己的x轴正方向旋转,10*Time.deltaTime是角度
    this.transform.Rotate(Vector3.right, 10*Time.deltaTime);
    
    //绕着世界坐标的x轴正方向
    this.transform.Rotate(Vector3.right, 10*Time.deltaTime,Space.World);
}

相对于某一个点转

参数一:相当于哪一个点 转圈圈
参数二:相对于那一个点的 哪一个轴转圈圈
参数三:转的度数 旋转速度 * 时间

void Update(){
    //绕过过原点的x轴正方向转
    this.transform.RotateAround(Vector3.zero, Vector3.right, 10*Time.deltaTime);
}

练习

通过head.localEulerAngles得到的角度 不会出现负数的情况
虽然界面上显示出了负数 但是 通过代码获取 始终 只能得到0~360之间的数

#region 练习题二
//炮台左右来回旋转
head.Rotate(Vector3.up, headRotateSpeed * Time.deltaTime);
//炮管上下来回旋转
pkPos.Rotate(Vector3.right, pkPosRotateSpeed * Time.deltaTime);
//通过head.localEulerAngles得到的角度 不会出现负数的情况 
//虽然界面上显示出了负数 但是 通过代码获取 始终 只能得到0~360之间的数

//只能是0到360 那就只有特殊判断了
if (!(head.localEulerAngles.y >= 315 && head.localEulerAngles.y <= 360) &&
    head.localEulerAngles.y >= 45 && headRotateSpeed > 0)
    headRotateSpeed = -headRotateSpeed;
else if (!(head.localEulerAngles.y <= 45 && head.localEulerAngles.y >= 0) &&
          head.localEulerAngles.y <= 315 && headRotateSpeed < 0)
    headRotateSpeed = -headRotateSpeed;

//只能是0到360 那就只有特殊判断了
if (!(pkPos.localEulerAngles.x >= 350 && pkPos.localEulerAngles.x <= 360) &&
    pkPos.localEulerAngles.x >= 10 && pkPosRotateSpeed > 0)
    pkPosRotateSpeed = -pkPosRotateSpeed;
else if (!(pkPos.localEulerAngles.x <= 10 && pkPos.localEulerAngles.x >= 0) &&
          pkPos.localEulerAngles.x <= 350 && pkPosRotateSpeed < 0)
    pkPosRotateSpeed = -pkPosRotateSpeed;
#endregion
    
10-20 21:39