‍个人主页:@元宇宙-秩沅

‍ 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#专题篇】—核心章题单实践练习

你们的点赞 收藏⭐ 留言 关注✅是我持续创作,输出优质内容的最大动力!、

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: