真Unity3d_四元数Quaternion
来源:互联网 发布:Ios11关闭4g网络 编辑:程序博客网 时间:2024/05/22 01:37
如果想完全,详细的了解四元素,可以看清华妹子的文章
http://blog.csdn.net/candycat1992/article/details/41254799
其他人的博客好像也没有说很清楚
清华妹子的这个文章现在有12W的浏览量,反正我是三年前看的,3年前没懂,3年后也没懂
反正unity3d里面的用法就是2个
第一个用法是:2个对象的面对面,敌人面对玩家,或者玩家瞄准敌人
Quaternion rotate = Quaternion.LookRotation (_player.transform.position - transform.position ,Vector3.up);
一开始,我自以为懂点矢量运算(之前做过RTS游戏),然后这么写
Vector3 dir = _player.transform.position * 0.95f - transform.position;GameObject obj = vp_Utility.Instantiate (Bullect, transform.position, Quaternion.Euler (dir)) as GameObject;
结果当然是不行的,射线总是差几度,有些偏移
网上说这么写,其实应该2个变量调转的,我的测试结果是射线45度向上的,不知为可(按我的理解应该是reverse)
transform.position - target.position但其实根据我的理解的矢量运算,应该确实是2个变量调换
应该是,target 矢量- source矢量
结果我的target 是 _player,
所以,_player.transform.position - transform.position
结果是我的需求,没毛病
这个问题搞了半天,就一个面对面问题,从中午搞到凌晨一点多,终于用LookRotation 方法搞定,机智如我,马上开个方便面助助兴
第二个用法是:四元数乘以三维矢量
1.计算angent的人物目标向量和人物当前转向向量,之间的夹角
Vector3 velocity = Quaternion.Inverse(transform.rotation) * agent.desiredVelocity;float angle = Mathf.Atan2(velocity.x, velocity.z) * 180.0f / 3.14159f;
2.最最普通的设置人物旋转
Quaternion.Euler (0, currentRotationAngle, 0);
3.很简单的朝向改变 ,下面代码中,lastDirection是摄像机向前的射线向量,重点是LookRotation()方法,意思明显就是获取和摄像机向量相同的四元数
Hololance.rotation = Quaternion.AngleAxis(0,Vector3.right);Hololance.rotation = Hololance.rotation* Quaternion.LookRotation( lastDirection);这么写,应该是等价的,多个四元数相乘
Hololance.rotation = Quaternion.AngleAxis(0,Vector3.right) * Quaternion.LookRotation( lastDirection);
关于四元数的一些深入测试研究
worldRotation = Quaternion.AngleAxis(deltaRotation, camera.transform.forward) * worldRotation;
我碰到的第一问题就是四元数相乘,到底是什么意思呢
矢量和矢量的乘积,可以构成新的标量
而四元数的乘积又是怎么一回事呢?
可以从下面这个哥们的博文,反推一点四元数知识,但其实他也写不怎么好,他是想做一个测试是,但是文章一开头确说四元数乘以矢量,也就是四元数乘三维矢量,不知道他是到底搞清楚了没有
http://www.cnblogs.com/hont/p/5958167.html
- 真Unity3d_四元数Quaternion
- 真UNITY3D_一些脚本
- 真Unity3d_人物摇杆操作
- 真unity3d_关于设计模式
- Quaternion 四元数
- Quaternion 四元数
- 真Unity3d_我们如何做技术选型
- 真Unity3d_基于profiler的优化
- 真Unity3d_关于基本GameObject的查找
- 真Unity3d_到底要怎么开始学
- 真Unity3d_我的AR初体验
- 真Unity3d_场景开发_Probuilder入门
- Ogre 的 四元数quaternion
- Ogre的四元数quaternion
- Ogre的四元数quaternion
- Quaternion(四元数)和旋转
- Quaternion四元数与旋转
- Quaternion(四元数)和旋转
- Java路径问题
- 使用xshell 连接到Linux
- OPENSSL RSA加密同一程序多次加载密钥会加密解密出错
- 数据类型转换
- C++复习
- 真Unity3d_四元数Quaternion
- 四种方式得到部署工程的路径
- 程序的调试
- 配置IP
- 敏感字过滤器
- Linux驱动技术(七) _内核定时器与延迟工作
- Android自定义动画专题二
- 第十九周:[sicily] 算法机考模拟题
- php 三种基础设计模式结合使用