博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity基础篇:四元数(Quaternion)和欧拉角(Eulerangle)讨论
阅读量:2167 次
发布时间:2019-05-01

本文共 1452 字,大约阅读时间需要 4 分钟。

四元数(Quaternion)和欧拉角(Eulerangle)这两个老朋友我们在游戏开发的时候会非常,非常频繁的使用他们。然而有时候我会混淆他们的定义以及用法,所以今天写一篇博客,来总结一下,夯实基础。

1.首先我们还是要了解一下定义,这位大神写的非常好,非常专业,非常全面!请务必读完这位大神的文章再读此篇博客!

https://blog.csdn.net/AndrewFan/article/details/62057519

2.然后是API和主要用途

首先是Quaternion。

然后我们都知道,Unity里面的Transform组件里的Rotation是四元数,但是他是以欧拉角(Vector3)的形式展现在我们面前,目的就是为了方便我们修改。因此,我们给Rotation直接赋值的时候,也只能用Quaternion赋值。意识到这点很重要。

当然,硬要给Rotation赋值也是可以的,不过要用到Quaternion.eulerAngles这个API。

例如

 

public class ExampleClass : MonoBehaviour {
 
    public Quaternion rotation = Quaternion.identity;
 
    void Example() {
 
        rotation.eulerAngles = new Vector3(0, 30, 0);
 
        print(rotation.eulerAngles.y);
 
    }
 
}
 

下面介绍几个四元数的常用API,返回值类型有的不为四元数,请多加注意

返回的是一个float变量

返回的是四元数

返回的是四元数

返回的是四元数

返回的是四元数,与上一个的区别是可以控制旋转速率,我更习惯于把这个当做translate的那种类型的API用,而上面那个我用来计算角度。

这个通常用来控制相机的跟随,或者人物的注视方向。

public Transform target;

 
    void Update() {
 
        Vector3 relativePos = target.position - transform.position;
 
        Quaternion rotation = Quaternion.LookRotation(relativePos);
 
        transform.rotation = rotation;
 
    }
 

****************************************************************************************************************************************

然后对于欧拉角,Unity中并没有专门的API,所以这里我们用transform和rigidbody相关的API进行讨论。

这个很不常用,因为他时常会导致意想不到的副作用,我建议使用rotation

通过上面几个例子,我们可以发现,欧拉角可以看成一个Vector3变量,对应的旋转顺序和法则可以从博客开始的大神文章得知。

好了,这篇博客到此为止,祝大家天天进步!

————————————————
版权声明:本文为CSDN博主「烟雨迷离半世殇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_15020543/article/details/82834885

你可能感兴趣的文章
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>