Unity 3D——四元数的应用
来源:互联网 发布:stc单片机引脚功能图 编辑:程序博客网 时间:2024/06/06 15:44
四元数用于旋转,确实很不好理解,但是,有一点好处是不会发生万向锁。 主要用法就是:
首先,获取你当前的Rotation的四元数和目标Rotation的四元数,相乘即可。
来自前辈的示范:
首先,获取你当前的Rotation的四元数和目标Rotation的四元数,相乘即可。
来自前辈的示范:
using UnityEngine;using System.Collections;// 暴走武林里主界面的球体的旋转效果public class SphereRotate : MonoBehaviour{ public Camera m_camera = null; private bool m_mouseDown = false; private Vector3 m_previosMousePosition = Vector3.zero; public float m_speed = 0.05f; private Quaternion m_targetRot = Quaternion.identity; void Start() { } void Update() { if (Input.GetMouseButtonDown(0)) { Debug.Log("mouse down"); m_mouseDown = true; m_previosMousePosition = Input.mousePosition; } else if (Input.GetMouseButtonUp(0)) { if (m_mouseDown) { Debug.Log("mouse up"); m_mouseDown = false; m_speed = 0.002f; } } if (m_mouseDown) { Vector3 _dir = Input.mousePosition - m_previosMousePosition; if (_dir.sqrMagnitude > 0.1f) { Vector3 _dir0 = new Vector3(0, 0, -1); Vector3 _dir1 = _dir0 + _dir * m_speed; // 四元数旋转 Quaternion _qt = Quaternion.FromToRotation(_dir0, _dir1); Quaternion _result = _qt * transform.rotation; transform.rotation = _result; // 边界限制 float _angle = Quaternion.Angle(Quaternion.identity, _result); Debug.Log(_angle); if (_angle > 10) { float _lerp = 10 / _angle; m_speed *= _lerp; m_targetRot = Quaternion.Lerp(Quaternion.identity, _result, _lerp); } else { m_targetRot = _result; } m_previosMousePosition = Input.mousePosition; } } else { transform.rotation = Quaternion.Lerp(transform.rotation, m_targetRot, 0.2f); } }}
0 0
- Unity 3D——四元数的应用
- Unity 3D——射线的应用
- Unity 3D——Touch的用法
- 初始Unity 3D——碰撞事件的监听
- Unity 3D的东西
- [Unity 3D] Unity 3D 里的碰撞检测
- Unity 3D 矩阵和四元数的研究
- 我的Unity 3D之旅——杂记之三种形式的旋转
- Unity 3D 现在开发移动应用免费了
- 我的Unity 3D之旅——第一人称射击游戏(3)
- 我的Unity 3D之旅——Hello World(1)
- 我的Unity 3D之旅——Hello World(2)
- 我的Unity 3D之旅——第一人称射击游戏(1)
- 我的Unity 3D之旅——第一人称射击游戏(2)
- 我的Unity 3D之旅——杂记之LightMapping和Light Probe
- 我的Unity 3D之旅——第一人称射击游戏(4)
- 我的Unity 3D之旅——第一人称射击游戏(5)
- 我的Unity 3D之旅——第一人称射击游戏(6)
- 用Eclipse调试ndk编译的c程序
- Hibernate(四)Hibernate常用配置文件详解
- 编辑框中添加一个控件及程序编辑
- 网桥系列 1
- c# MVC 跳转页面
- Unity 3D——四元数的应用
- Android 实现书籍翻页效果----源码篇
- 最长上升子序列。百炼2757 2种方法
- B+/-Tree原理及mysql的索引分析
- Hibernate(五)Hibernate一对多关系映射
- linux基础--tar命令说明
- 张小龙 与 微信
- HDU2569
- POJ2586