四元数

public static Quaternion Euler(Vector3 euler);

传入一个向量,使物体旋转,如:

cube.transform.rotation=Quaternion.Euler(new Vector3(0,30,0));

值得注意的是:Unity中组件Transform的Rotation实际上是Quaternion类型的

public static Quaternion Euler(float x, float y, float z);

与上面功能类似,但更为简洁,如:

cube.transform.rotation=Quaternion.Euler(0,30,0);

public static Quaternion Lerp(Quaternion a, Quaternion b, float t);

线性插值,与Mathf.Lerp差不多。

public static Quaternion LookRotation(Vector3 forward, [DefaultValue("Vector3.up")] Vector3 upwards);

与transform.LookAt类似的是都是将其正方向指向目标方向,但是LookRotation可以做的跟更好

如:

public class QuaternionTest : MonoBehaviour
{public GameObject cube;public GameObject target;// Start is called before the first frame updatevoid Start(){Quaternion q= Quaternion.LookRotation(target.transform.position-cube.transform.position);cube.transform.rotation=Quaternion.Lerp(cube.transform.rotation,q,0.05f);   }
}

值得注意的是:传入参数Vector3 forward是一个向量

public static Quaternion AngleAxis(float angle, Vector3 axis);

如:

public class QuaternionTest : MonoBehaviour
{public GameObject cube;public GameObject target;// Start is called before the first frame updateprivate void Start() {// var q1=Quaternion.Euler(0,30,0);// var q2=Quaternion.Euler(0,60,0);// var q3=q1*q2;//cube旋转90°// cube.transform.rotation=q3;}void Update(){//cube.transform.rotation=Quaternion.Euler(0,30,0);//cube.transform.rotation=Quaternion.Euler(0,30,0);// Quaternion q= Quaternion.LookRotation(target.transform.position-cube.transform.position);// cube.transform.rotation=Quaternion.Lerp(cube.transform.rotation,q,0.05f);var mouseX=Input.GetAxis("Mouse X");Quaternion q=Quaternion.AngleAxis(mouseX,Vector3.up);cube.transform.rotation*=q;        }}

值得注意的是:两个四元数相乘,是在原始的角度上,再旋转相应的度数

Vector3 eulerAngles=cube.transform.rotation.eulerAngles;Debug.Log(eulerAngles);

Unity把四元数以欧拉角的形式展示在Inspector面板上

四元数与向量相乘:返回值为向量,相当于把向量旋转了一个角度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境

知识点:简单了解K210芯片 2018年9月6日,嘉楠科技推出自主设计研发的全球首款基于RISC-V的量产商用边缘智能计算芯片勘智K210。该芯片依托于完全自主研发的AI神经网络加速器KPU,具备自主IP、视听兼具与可编程能力三大特点,能够充分适配多个业务场景的需求。作为嘉楠科…

详解Mybatis之动态sql问题

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 文章目录 一. 在sql映射文件中如何写注释?二. 什么是动态sql?三. 动态sql常用标签有…

Android Studio 中使用 FlutterJsonBeanFactory

1、创建entity 安装FlutterJsonBeanFactory插件,在文件夹下右键 New -> JsonDartBeanAction 2、删除entity,直接右键删除entity,然后到generated/json/base/json_convert_content.dart文件,按下快捷键altj即可 参考文章 ht…

VBA操作WORD(六)另存为不含宏的文档

Sub 另存为不含宏的文档()Application.DisplayAlerts False Application.ScreenUpdating FalseDim oDoc As DocumentSet oDoc Word.ActiveDocumentDim oRng As RangeSet oRng oDoc.ContentDim sPath As String默认存储路径,当前用户桌面,注释掉的是当…

pycharm 使用远程服务器 jupyter (本地jupyter同理)

1. 远程服务器miniconda 环境中创建jupyter环境 # 1. 激活环境 conda activate envname#2. 在环境中安装jupyter pip install jupyter # 或者 conda install jupyter#3. 生成jupyter_notebook_config.py文件 jupyter notebook --generate-config#4. 设置密码 jupyter noteboo…

Spark编程-SparkSQL

SparkSql能做些啥 Spark SQL的核心概念是DataFrame,它是一个分布式的数据集合,类似于关系数据库中的表。支持使用SQL语言直接对DataFrame进行查询,提供了丰富的内置函数和表达式,可以用于数据的转换、过滤和聚合等操作,支持多种数据源&#…

功能测试也可以发现数据库相关的性能问题

很多同学认为功能测试和性能测试是严格分开的,功能测试人员无法发现性能问题。其实不是这样的,功能测试人员在验证功能时也可以发现性能问题;一些功能反而在功能测试环境不好验证,需要在性能环境上测试。 今天咱们就说一下测试涉及…

Leetcode 滑动窗口题目总结

(Leetcode 滑动窗口题目总结) 1: 3.无重复字符的最长子串 https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/子串 和 子序列的区别:字串是连续的,子序列是非连续的。快慢指针 i 和 j,…

前端面试题 —— React (二)

目录 一、React 组件中怎么做事件代理?它的原理是什么? 二、React.Component 和 React.PureComponent 的区别 三、Component, Element, Instance 之间有什么区别和联系? 四、React声明组件有哪几种方法,有什么不同&#xff1f…

QT项目代码去UI界面常用开发步骤

QT项目代码去UI界面常用开发步骤 因项目开发需求,领导要求整个QT项目中不要用UI方式来实现界面,这样能保障程序运行稳定性以及代码的逻辑和可读性,先记录具体操作步骤如下: 1、首先我们通过拖控件的方式来实现界面的设计效果&#xff0c…

【Docker】安全及日志管理

目录 一、Docker 安全及日志管理1.1 Docker 容器与虚拟机的区别1. 隔离与共享2. 性能与损耗 1.2Docker 存在的安全问题1.Docker 自身漏洞2.Docker 源码问题 1.3 Docker 架构缺陷与安全机制1. 容器之间的局域网攻击2. DDoS 攻击耗尽资源3. 有漏洞的系统调用4. 共享root用户权限 …

DEVICENET转ETHERNET/IP网关devicenet协议

捷米JM-EIP-DNT,你听说过吗?这是一款自主研发的ETHERNET/IP从站功能的通讯网关,它能够连接DEVICENET总线和ETHERNET/IP网络,从而解决生产管理系统中协议不同造成的数据交换互通问题。 这款产品在工业自动化领域可谓是一大利器&…

特定Adreno GPU的Android设备发生冻屏问题

1)特定Adreno GPU的Android设备发生冻屏问题 ​2)Unity版本升级后,iOS加载UnityFramework bundle闪退 3)关于RectTransfrom.rect在屏幕空间中表示的相关问题 4)Unity Mesh泄露问题 这是第345篇UWA技术知识分享的推送&a…

Java 8 Stream流:代码简洁之道

文章目录 前言一、filter二、map三、mapToInt、mapToLong、mapToDouble四、flatMap五、flatMapToInt、flatMapToLong、flatMapToDouble六、distinct七、sorted八、peek九、limit十、forEach十一、forEachOrdered十二、toArray十三、reduce十四、collect十五、min、max十六、cou…

uniApp禁止遮罩弹窗下的页面滚动

文章目录 问题解决代码 问题 最近用uniApp开发一款软件,页面是可以滚动的长列表,自定义组件弹窗遮罩出来后,滑动屏幕,页面也跟着滚动。研究了网上的解决办法 在遮罩层的最外层的view元素中加入 touchmove.stop.prevent"moveH…

Llama 2 来袭 - 在 Hugging Face 上玩转它

🤗 宝子们可以戳 阅读原文 查看文中所有的外部链接哟! 引言 今天,Meta 发布了 Llama 2,其包含了一系列最先进的开放大语言模型,我们很高兴能够将其全面集成入 Hugging Face,并全力支持其发布。Llama 2 的社…

Apache Kafka 入门教程

Apache Kafka 入门教程 一、简介简介架构 二、Kafka 安装和配置JDK安装 Kafka配置文件详解 三、Kafka 的基本操作启动和关闭Topic 创建和删除Partitions 和 Replication 配置Producer 和 Consumer 使用方法ProducerConsumer 四、Kafka 高级应用消息的可靠性保证Kafka StreamKaf…

Last Week in Milvus

Whats New 全力冲刺2.3.0发布中 Core Updates #25663 删除了 calc_distance 接口。此接口用于计算输入的向量之间的距离,但由于使用用户较少,且维护成本较高,会在2.3.0中将其删除。 #25031 大量用户反馈在standalone模式下,系统空…

将AWS S3大文件文件上传相关的API集成为js文件,功能包括 多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示

地址 https://github.com/gk-1213/easy-s3/tree/main easy-s3 将AWS S3大文件文件上传相关的API集成为js文件,功能包括多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示。 暂时不包括文件分片下载相关功能&#…

【业务功能篇54】Springboot项目常用工具类:HTTP状态码/客户端request

状态码常量类 /*** 返回状态码**/ public class HttpStatus {/*** 操作成功*/public static final int SUCCESS 200;/*** 对象创建成功*/public static final int CREATED 201;/*** 请求已经被接受*/public static final int ACCEPTED 202;/*** 操作已经执行成功&#xff0…