Unity基础篇:四元数(Quaternion)和欧拉⾓(Eulerangle)
讨论
四元数(Quaternion)和欧拉⾓(Eulerangle)这两个⽼朋友我们在游戏开发的时候会⾮常,⾮常频繁的使⽤他们。然⽽有时候我会混淆他们的定义以及⽤法,所以今天写⼀篇博客,来总结⼀下,夯实基础。
国土安全好看吗>zachary
1.⾸先我们还是要了解⼀下定义,这位⼤神写的⾮常好,⾮常专业,⾮常全⾯!请务必读完这位⼤神的⽂章再读此篇博客!
2.然后是API和主要⽤途
⾸先是Quaternion。
高考最后一个月
focus s然后我们都知道,Unity⾥⾯的Transform组件⾥的Rotation是四元数,但是他是以欧拉⾓(Vector3)的形式展现在我们⾯前,⽬的就是为了⽅便我们修改。因此,我们给Rotation直接赋值的时候,也只能⽤Quaternion赋值。意识到这点很重要。
当然,硬要给Rotation赋值也是可以的,不过要⽤到Quaternion.eulerAngles这个API。
例如
abdomenpublic class ExampleClass : MonoBehaviour {
public Quaternion rotation = Quaternion.identity;
void Example() {
rotation.eulerAngles = new Vector3(0, 30, 0);
print(rotation.eulerAngles.y);
textbook}
}
下⾯介绍⼏个四元数的常⽤API,返回值类型有的不为四元数,请多加注意
返回的是⼀个float变量
warwick avenue
返回的是四元数
返回的是四元数
返回的是四元数
返回的是四元数,与上⼀个的区别是可以控制旋转速率,我更习惯于把这个当做translate的那种类型的API⽤,⽽上⾯那个我⽤来计算⾓度。
在线中文翻译成英文
这个通常⽤来控制相机的跟随,或者⼈物的注视⽅向。
public Transform target;
void Update() {
icloud是什么意思Vector3 relativePos = target.position - transform.position;
Quaternion rotation = Quaternion.LookRotation(relativePos);
}
****************************************************************************************************************************************然后对于欧拉⾓,Unity中并没有专门的API,所以这⾥我们⽤transform和rigidbody相关的API进⾏讨论。
沪江英语学习
这个很不常⽤,因为他时常会导致意想不到的副作⽤,我建议使⽤rotation
通过上⾯⼏个例⼦,我们可以发现,欧拉⾓可以看成⼀个Vector3变量,对应的旋转顺序和法则可以从博客开始的⼤神⽂章得知。好了,这篇博客到此为⽌,祝⼤家天天进步!