unity中eulerAngles和rotation的区别

最近在用unity编写机群防御演示的项目,在编写子母机和导弹的代码时用到了eulerAngles和rotation的概念,我不是很懂unity,算是新手了,也不了解eulerAngles和rotation的区别,就直接随便找了一个可以改变角度的函数用了,结果就出了问题,被师父劈头盖脸一顿骂~~~~于是就自己去查了unity的API,现在就将自己所了解的分享给大家,互相学习,欢迎之处不足之处。

先说eulerAngles,以下是unity的API对eulerAngles的描述

描述

欧拉角的旋转角度。

x,y和z角表示围绕z轴的z度,围绕x轴的x度以及围绕y轴的y度(以该顺序)。

只能使用这个变量来读取和设置角度为绝对值。不要增加它们,因为当角度超过360度时它会失败。改用Transform.Rotate。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public float yRotation = 5.0F;
    void Update() {
        yRotation += Input.GetAxis("Horizontal");
        transform.eulerAngles = new Vector3(10, yRotation, 0);
    }
    void Example() {
        print(transform.eulerAngles.x);
        print(transform.eulerAngles.y);
        print(transform.eulerAngles.z);
    }
}
不要单独设置一个eulerAngles轴,如下:
eulerAngles.x = 10;
这是不合法的,这样做会导致意想不到的结果。当你想要改变角度时,必须得像最上面那样一次性设置值。

在接着看rotation,同样,先看一下rotation在unity的API中的描述:

描述

世界空间变换的旋转以四元数形式存储

Unity在内部存储四元数旋转。要旋转对象,请使用Transform.Rotate。使用Transform.eulerAngles将旋转设置为欧拉角。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Example() {
        transform.rotation = Quaternion.identity;
    }
}
只看API里的讲述是不能明白 eulerAngles和rotation的区别的(至少我没明白)。
我也看了其他人关于eulerAngles和rotation区别的理解,总结起来就一句话: eulerAngles的角度是不能随时变化的,是一个定值,而rotation的角度是可以增加的,eulerAngles用vector3来赋值,而rotation用Quaternion来赋值。



  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值