Unity API详解——Quaternion类
Quaternion类又称四元数,由x、y、z和w这4个分量组成,属于struct类型。在Unity中,用Quaternion来存储和表示对象的旋转角度。Quaternion的变换比较复杂,对于GameObject一般的旋转及移动,可以用Transform中的相关方法实现。本博客介绍Quaternion类的一些实例属性、静态方法和运算符,并对Quaternion类相乘运算符“*”的两种重载格式在功能上的异同进行了简要的注解。
文章目录
- 一、Quaternion类实例属性
- 1、基本语法
- 2、功能说明
- 3、代码实现
- 二、Quaternion类实例方法
- 1、基本语法
- 2、功能说明
- 3、代码实现
一、Quaternion类实例属性
在Quaternion类中,设计的实例属性主要有eulerAngles属性:欧拉角
1、基本语法
public Vector3 eulerAngles { get; set; }
2、功能说明
此属性用来返回或设置Quaternion实例对应的欧拉角
- 对GameObject对象的Transform进行欧拉角的变换次序是,先绕z轴旋转相应的角度,再绕x轴旋转相应的角度,最后再绕y轴旋转相应的角度。注意不同的旋转次序得到的最终状态是不同的
- 对GameObject独享的旋转角进行赋值的方式通常由两种:第一种是将Quaternion实例赋值给transform的rotation,第二种是将三维向量代表的欧拉角直接赋值给transform的eulerAngles
3、代码实现
下面通过实例演示属性eulerAngles的使用,创建一个立方体,将EulerAngle_test.cs挂载在立方体上,将A、B同时拖放物体给它赋值,对于公开的变量来说,Unity编辑器会在 Inspector面板自动实例这个类型默认的空物体,方便赋值,如果没赋值就使用变量 会报第错 “未赋值的引用异常”。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class EulerAngle_test : MonoBehaviour
{public Transform A, B;Quaternion rotations = Quaternion.identity;Vector3 eulerAngle = Vector3.zero;float speed = 10.0f;void Update(){//第一种方式:将Quaternion赋值给transform的rotationrotations.eulerAngles = new Vector3(0.0f, speed * Time.time, 0.0f);A.rotation = rotations;//第二种方式:将三维向量代表的欧拉角直接赋值给transform的eulerAngleseulerAngle = new Vector3(0.0f, speed * Time.time, 0.0f);B.eulerAngles = eulerAngle;}
}

二、Quaternion类实例方法
在Quaternion类中涉及的实例方法有SetFromToRotation方法、SetLookRotation方法和ToAngleAxis方法,静态方法AngleAxis和实例方法TOAngleAxis功能相近
1、基本语法
public void SetFromTorotation(Vector3 fromDirection, Vector3 toDirection);
2、功能说明
此方法用于创建一个从fromDirection到toDirection的rotation,比如如下代码:
Quaternion q1 = Quaternion.identity;
q1.SetFromToRotation(v1,v2);
transform.rotation = q1;
则相当于将GameObject对象进行如下变换:首先将GameObject对象自身坐标系的x、y、z轴方向和世界坐标系x、y、z轴方向一致,然后将GAmeObject对象自身坐标系中向量y1指向的方向旋转到v2方向
notes:不可以直接及使用transform.rotation.SetFormToRotation(v1, v2)方式进行设置,只能将实例化的Quaternion赋值给transform.rotation
3、代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SetFromRotation_test : MonoBehaviour
{public Transform A, B, C;Quaternion q1 = Quaternion.identity;void Update(){//不可直接使用C.rotation.SetFromToRotation(A.position,B.position);q1.SetFromToRotation(A.position, B.position);C.rotation = q1;//在Scene面板中绘制直线Debug.DrawLine(Vector3.zero, A.position, Color.red);Debug.DrawLine(Vector3.zero, B.position, Color.green);Debug.DrawLine(C.position, C.position + new Vector3(0.0f, 1.0f, 0.0f), Color.black);Debug.DrawLine(C.position, C.TransformPoint(Vector3.up*1.5f),Color.yellow);}
}
相关文章:
Unity API详解——Quaternion类
Quaternion类又称四元数,由x、y、z和w这4个分量组成,属于struct类型。在Unity中,用Quaternion来存储和表示对象的旋转角度。Quaternion的变换比较复杂,对于GameObject一般的旋转及移动,可以用Transform中的相关方法实现…...
8个免费的PNG素材网站推荐
很多设计小白都不知道什么是PNG。事实上,PNG是一种支持透明度的图像格式。当你想在设计中将图像与背景或文本混合时,它就会派上用场。 如果你没有时间为你正在处理的设计创建透明的PNG图像,你也可以使用我收集的PNG素材网站,以便…...
ChatGPT技术原理 第二章:自然语言处理基础
目录 2.1 语言模型 2.3 词嵌入 2.4 注意力机制 2.5 生成式模型 2.1 语言模型...
国民技术N32G430开发笔记(8)- 内部Flash的读写操作
N32G430 内部Flash的读写操作 1、主存储区最大为 64KB,也称作主闪存存储器,包含 32 个 Page,用于用户程序的存放和运行,以及数 据存储。 每一页的大小为2K字节 2、IAP 升级我们将64K的flash分区如下: Boot 0x800000…...
JVM 基本知识
目录 前言 一、JVM 内存区域划分 1.1 程序计数器 1.2 栈 1.3 堆 1.4 方法区 二、 JVM 类加载机制 2.1 类加载需要经过的几个步骤 2.1.1 Loading - 加载 2.1.2 Linking - 连接 2.1.3 initialization(初始化) 小结 经典面试题 三、JVM 垃圾…...
【源码解析】流控框架Sentinel源码解析
Sentinel简介 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 资源 资源…...
redis面试重点------源于黑马
缓存问题三兄弟 是因为不同的原因让请求全部打到了数据库而造成的问题 什么是缓存穿透? 缓存穿透是指查询一个数据,在redis和MySQL中都不存在。也就是查询一个数据不存在的数据,导致每次请求都会到达数据库,给数据造成很大的压力…...
jQuery知识点二
一、 jQuery 属性操作 1. 元素固有属性值 prop() 获取属性:prop("属性") 设置属性:prop("属性","属性值") 所谓元素固有属性就是元素本身自带的属性,比如 <a> 元素里…...
4 月份 火火火火 的开源项目
盘点 4 月份 GitHub 上 Star 攀升最多的开源项目,整个 4 月份最火项目 90% 都是 AI 项目(准确的说,最近半年的热榜都是 AI 项目) 本期推荐开源项目目录: 1. AI 生成逼真语音 2. 复旦大模型 MOSS! 3. 让画中…...
PAT A1011 World Cup Betting
1011 World Cup Betting 分数 20 作者 CHEN, Yue 单位 浙江大学 With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excited as the best players from the best teams doing battles for the World Cup trophy in South Af…...
Android 拍照以及相册中选择(适配高版本)————上传头像并裁剪(一)
前言 在项目研发中,相信大家都遇到过给用户增加头像照片的需求。 随着手机版本的不断更新,android 8、android 9、android 10、android 12、android 13、鸿蒙系统等等;遇到这个功能需求,大家肯定会想,“这还不好写&…...
带你了解现在的LED显示屏技术
随着LED显示屏技术的空前繁荣,LED显示屏产品备受关注,广泛应用于商业广告、实况播映、交通诱导、舞台演绎等领域,发展至今。你了解十大中国LED显示屏制造商吗? LED显示屏技术已经得到了长足的发展,现在的LED显示屏技术…...
AI模型推理(1)——入门篇
前言 本文主要介绍AI模型推理的相关基础概念,为后续云原生模型推理服务的学习做准备。 初识模型部署 对于深度学习模型来说,模型部署指让训练好的模型在特定环境中运行的过程。相比于常规的软件部署,模型部署会面临更多的难题: …...
MySQL--表的基本查询--0410--15
目录 1. Create 1.1 insert 1.1.2 插入否则更新 1.2 replace 2.Retrieve 2.1 select 2.1.1 全列查询 2.1.2 指定列查询 2.1.3 查询字段为表达式 2.1.4 为查询结果指定名称 2.1.5 去重 2.2 where 2.2.1 > and > and < and < and 2.2.2 in between…...
Scala语言入门以及基本语法
文章目录 前言1.环境搭建1) IDEA中插件下载2) SDK下载配置 2.基本使用1)var与val的区别2) .基本数据类型3).字符串的基本用法4) 控制结构1) if else2) for 循环3) while循环 5)类6) 函数 前言 scala在一种简洁的高级语言中结合了面向对象和函数式编程。Scala的静态…...
Linux shell编程 循环语句for continue break
for循环是编程语言中一种循环语句 示例1:循环读取user.txt中的用户名,创建用户。设置密码。 for i in $(cat /opt/user.txt) douseradd $iecho 123456 | passwd --stdin $i done 示例2:循环读取ipaddr文本文件中地址,执行ping命令…...
leetcode 643. 子数组最大平均数 I
题目描述解题思路执行结果 leetcode 643. 子数组最大平均数 I 题目描述 子数组最大平均数 I 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答…...
TDA4VM/VH 芯片硬件 mailbox
请从官网下载 TD4VM 技术参考手册,地址如下: TDA4VM 技术参考手册地址 概述 (Mailbox 的介绍在 TRM 的第7.1章节) Mailbox 使用邮箱中断机制实现了 VM 芯片的核间通信。 Mailbox 是集成在 NAVSS0 域下的一个外设(NAVSS0 的说明可以查看&a…...
如何利用Trimble RealWorks三维激光扫描仪进行外业测量和内业处理?
文章目录 0.引言1.Trimble RealWorks介绍2.外业测量3.内业处理 0.引言 笔者所在资源与环境工程学院实验室采购有一台Trimble RealWorks三维激光扫描仪(仪器名:Trimble TX8),因项目需要,在学校实验场地进行实地测量训练…...
mysql数据备份
数据备份分类 数据库的备份类型 完全备份:对整个数据库的数据进行备份部分备份:对部分数据进行备份(可以是一张表也可以是多张表) 增量备份:是以上一次备份为基础来备份变更数据的,节约空间差异备份&#x…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
