【100个 Unity小知识点】 | Unity中的 eulerAngles、localEulerAngles细节剖析

简介: Unity 小科普老规矩,先介绍一下 Unity 的科普小知识:Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!

Unity 小知识点学习

Unity中的 eulerAngles、localEulerAngles细节剖析

Unity中的 rotation 、 localRotation 和 eulerAngles、localEulerAngles都是用来表示旋转的一个API


不同的是rotation和localRotation是Quaternion类型,返回一个四元数(x,y,z,w)(0,1)


而eulerAngles、localEulerAngles返回的是一个欧拉角(x,y,z)(0,360)


他们都是程序集里面的Transform类下的方法

image.png使用方法:

  Debug.Log("打印gameObject的世界旋转四元数信息" + gameObject.transform.rotation);
  Debug.Log("打印gameObject的本地旋转四元数信息" + gameObject.transform.localRotation);
  Debug.Log("打印gameObject的世界旋转欧拉角信息" + gameObject.transform.eulerAngles);
  Debug.Log("打印gameObject的本地旋转欧拉角信息" + gameObject.transform.localEulerAngles);

这几个API的使用非常简单


rotation是返回世界坐标旋转四元数信息,localRotation是返回本地旋转四元数信息。

eulerAngles是返回世界坐标旋转欧拉角信息,localEulerAngles是返回本地旋转欧拉角信息。


由于rotation和localRotation的关系 与 eulerAngles和localEulerAngles 的关系类似

只不过返回值一个是四元数形式,一个是欧拉角形式


所以我们拿eulerAngles和localEulerAngles做剖析,本文主要是研究世界坐标和本地坐标


示例学习

来看一下示例深入了解一下

image.png场景中有三个游戏对象GamaObject,分别是1、2、3


1.在未修改他们的位置旋转信息的时候,执行打印信息结果为:

image.png


2.修改3号物体的旋转为(0,180,0),打印结果为:

image.png


可以看到3号物体的世界坐标旋转信息 和 本地旋转信息 都发生了变化,Y轴信息变为180,这也是正确的结果


然后我们接着修改2号物体的旋转信息


3.接着修改2号物体的旋转为(0,180,0),打印结果为:

image.png


我们修改2号的旋转信息后,可以看到2号的世界和本地旋转信息都发生了变化,Y轴信息变为180,这也是正确的结果


然后3号的世界旋转信息变成了(0,0,0),本地坐标还是(0,180,0),这是什么原因呢?


这是因为3号的本来世界坐标旋转信息就是(0,180,0),在加上2号又把旋转角度加了180,所以3号的世界旋转信息应该是(0,360,0)

但是到360的时候就会归零,重新计算,所以3号的世界坐标旋转信息才变成了(0,180,0)


4.修改1号坐标(10,0,0),2号坐标(0,10,0),3号坐标(0,0,10),打印结果为:

image.png

从结果中可以看到2号和3号的eulerAngles都变得有些不规律,localEulerAngles都是跟Inspector面板上的数值一样


这是因为2号的世界坐标是在1号的基础上先按照x轴旋转了10度,又按照2号自身按照y轴旋转了10度


所以2号的世界坐标旋转信息是经过双重计算出来的,而本地旋转信息则跟面板一致!


总结

本文主要是整理世界坐标和本地坐标的旋转信息研究


游戏对象的世界旋转信息 是以 世界坐标的(0,0)来标记信息


游戏对象的本地旋转信息父对象的位置信息为中心,就是Inspector面板中的Rotation属性值


所以我们在用到旋转信息的时候一定要注意到底是需要世界坐标还是本地坐标信息


四元数和欧拉角相互转换的方法可以看这篇文章:https://xiaoy.blog.csdn.net/article/details/120208179


相关文章
|
6月前
|
图形学
【unity知识点】Unity 协程/携程Coroutine
【unity知识点】Unity 协程/携程Coroutine
432 0
|
6月前
|
图形学
【unity知识点】实现延迟调用——InvokeRepeating Invoke CancelInvoke Coroutine使用介绍
【unity知识点】实现延迟调用——InvokeRepeating Invoke CancelInvoke Coroutine使用介绍
281 0
|
vr&ar 图形学
【100个 Unity小知识点】 | Unity中常用的几种单例写法
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
|
vr&ar 图形学
【100个 Unity小知识点】 | Unity两种获取游戏对象的方法,GameObject.Find 和 Transform.Find区别
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【100个 Unity小知识点】 | Unity两种获取游戏对象的方法,GameObject.Find 和 Transform.Find区别
|
JSON vr&ar 图形学
【100个 Unity小知识点】 | Unity读取txt或者Json文件,包括 换行符 的方法
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【100个 Unity小知识点】 | Unity读取txt或者Json文件,包括 换行符 的方法
|
API vr&ar 图形学
【100个 Unity小知识点】☀️ | Unity中使用代码查询Draw call、Tris和Verts等信息
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【100个 Unity小知识点】☀️ | Unity中使用代码查询Draw call、Tris和Verts等信息
|
vr&ar 图形学
【100个 Unity小知识点】☀️ | Unity中显示运行时游戏帧率的方法
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【100个 Unity小知识点】☀️ | Unity中显示运行时游戏帧率的方法
|
vr&ar 图形学
【100个 Unity小知识点】☀️ | Unity 中的原始预制体 和 预制体变体 的区别和作用
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【100个 Unity小知识点】☀️ | Unity 中的原始预制体 和 预制体变体 的区别和作用
|
vr&ar 图形学
【100个 Unity小知识点】☀️ | Unity 中怎样读取Excel文件
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【100个 Unity小知识点】☀️ | Unity 中怎样读取Excel文件
|
API vr&ar 图形学
【Unity3D 灵巧小知识点】☀️ | Unity 移动物体到指定位置的几种方法【精选快捷使用】
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。