个人主页:@元宇宙-秩沅
hallo 欢迎 点赞 收藏⭐ 留言 加关注✅!
本文由 秩沅 原创
收录于专栏:unity每日一记
⭐️推荐文章⭐
⭐【软件设计师高频考点暴击】
⭐【Unityc#专题篇】之c#系统化大礼包】
⭐【unity数据持久化】数据管理类_PlayerPrfs
⭐【unity本站最全系列】unity常用API大全一篇文章足以
⭐⭐
文章目录
⭐️推荐文章⭐⭐⭐(==A==) 四元数(==c==) (==D==) ⭐️系统路线学习点击跳转⭐
(A) 四元数
特点
1,绕着某个轴转x度,轴可以是任意轴(轴-角对) 2,避免了欧拉角中万向节死锁的问题 3,避免了欧拉角中角度变化不在(-180,180)范围内的问题
四元数解决了欧拉角中万向节死锁的问题当Unity中transform的X轴为90度是发生万向节死锁,此时不管移动y轴还是z轴,物体都往X轴进行旋转
原理公式
假定四元数Q绕着n轴旋转β度
//计算原理_绕x轴旋转60度
Quaternion q = new Quaternion(Mathf.Sin(30 * Mathf.Deg2Rad),
0, 0, Mathf.Cos(30 * Mathf.Deg2Rad));
直接简单公式
Quaternion.AngleAxis(角度数值,轴(向量))
//绕x轴旋转60度
Quaternion q = Quaternion.AngleAxis(60, Vector3.right);
API常用
1.四元数和欧拉角转换
欧拉角转四元数 Quaternion A = Quaternion.Euler(60, 0, 0); 四元数转欧拉角 A.eulerAngles
2.旋转
四元数相乘代表旋转四元数
//四元数旋转方法
transform.rotation *= Quaternion.AngleAxis(30,vector3.forword);
3.单位化四元数
[1,(0,0,0)]和[-1,(0,0,0)]都是单位四元数 表示没有旋转量Quaternion.identity _用于对象角度初始化
Instantiate(XXXX, Vector3.zero, Quaternion.identity);
4.四元数的差值运算
特点: Lerp() 和Slerp();官方建议一般用Slerp();先快后慢旋转
transform.rotation = Quaternion.Slerp(transform.rotation,
target.rotation, Time.deltaTime);
匀速旋转—— time>=1 到达目标
time += Time.deltaTime;
B.transform.rotation = Quaternion.Slerp(start,
target.rotation, time);
5.四元数的旋转看向——LookAt的本质
Quaternion A = Quaternion.LookRotation(B.position - A.position);
//B - A = AB 向量 ,所以传入的是向量
transform.rotation = A;
【Unity每日一记】进行发射,位置相关的方法总结 【Unity每日一记】摄像机相关向量代码API大全
(c)
(D)
⭐️系统路线学习点击跳转⭐
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习
你们的点赞 收藏⭐ 留言 关注✅是我持续创作,输出优质内容的最大动力!、
精彩链接
发表评论