unity3d————四元数,欧拉角的互相转换的初步了解

news/2024/11/12 14:06:13/

代码示例:

public class siyuanshu : MonoBehaviour
{void Start(){//1.欧拉角转四元数Quaternion q2 = Quaternion.Euler(60, 0, 0);GameObject obj2 = GameObject.CreatePrimitive(PrimitiveType.Cube);obj2.transform.rotation = q2;//2.四元数转欧拉角print(q2.eulerAngles);}
}

运行结果:

 

1. Quaternion.Euler(float x, float y, float z)

  • 作用:这个方法接受三个float类型的参数,分别代表绕X轴、Y轴和Z轴旋转的欧拉角(以度为单位),并返回一个Quaternion对象,该对象表示这三个欧拉角对应的旋转。
  • 参数
    • x:绕X轴旋转的角度(度)。
    • y:绕Y轴旋转的角度(度)。
    • z:绕Z轴旋转的角度(度)。
    • 执行顺序    z-x-y
  • 返回值:一个Quaternion对象,表示给定的欧拉角旋转。
  • 在本代码中的使用Quaternion q2 = Quaternion.Euler(60, 0, 0); 这行代码创建了一个四元数q2,它表示绕X轴旋转60度,绕Y轴和Z轴不旋转(即旋转角度为0)。

2. GameObject.CreatePrimitive(PrimitiveType type)

  • 作用:这个方法接受一个PrimitiveType枚举类型的参数,并返回一个GameObject对象,该对象是一个具有指定基本形状(如立方体、球体等)的新游戏对象。
  • 参数
    • type:一个PrimitiveType枚举值,指定要创建的基本形状。
  • 返回值:一个GameObject对象,它是新创建的基本形状游戏对象。
  • 在本代码中的使用GameObject obj2 = GameObject.CreatePrimitive(PrimitiveType.Cube); 这行代码创建了一个新的立方体游戏对象,并将其赋值给obj2变量。

3. Transform.rotation

  • 作用:这是一个属性,用于获取或设置游戏对象的旋转(以Quaternion表示)。
  • 类型Quaternion
  • 可读写:是。
  • 在本代码中的使用obj2.transform.rotation = q2; 这行代码将之前创建的q2四元数(表示绕X轴旋转60度)赋值给obj2游戏对象的Transform组件的rotation属性,从而使立方体绕X轴旋转60度。

 在这部分代码中,实现了将一个欧拉角转换为四元数,并将这个四元数旋转应用到一个新创建的立方体游戏对象上。

 综上所述,这段代码通过Quaternion.Euler方法将欧拉角转换为四元数,然后通过GameObject.CreatePrimitive方法创建一个立方体游戏对象,最后通过Transform.rotation属性将四元数旋转应用到这个立方体上。这是Unity中常见的用于控制游戏对象旋转的方法。

public Vector3 eulerAngles { get; set; } 

eulerAngles 属性

  • 类型Vector3
  • 可读写:是
  • 描述
    • 获取:当你读取eulerAngles属性时,它返回一个Vector3,其中包含游戏对象当前旋转的欧拉角(X、Y、Z分量,以度为单位)。
    • 设置:当你设置一个Vector3eulerAngles属性时,游戏对象的旋转会被更新为对应的欧拉角旋转。Unity会自动将这个欧拉角转换为一个四元数(Quaternion),因为四元数在内部用于表示旋转,以避免万向锁(gimbal lock)等问题。


http://www.ppmy.cn/news/1545596.html

相关文章

【计网不挂科】计算机网络期末考试(综合)——【选择题&填空题&判断题&简述题】完整试卷

前言 大家好吖,欢迎来到 YY 滴计算机网络 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的计算机网络题目,供yy应对期中考试复习。大家可以参考 本章是去答案版本。带答案的版本在下…

Android setContentView执行流程(1)-生成DecorView

setContentView的流程主要就是讲在Activity的onCreate方法中调用setContentView方法之后,我们自定义的xml文件加载的过程,学习它可以让我们对整个View树的理解更加透彻,并且通过源码的学习,我们可以从根本上理解一些问题&#xff…

ITC终裁确认英诺赛科客户不受英诺赛科与EPC专利纠纷影响

英诺赛科是一家致力于创建基于高性能、低成本、硅基氮化镓(GaN-on-Si)电源解决方案的全球能源生态系统的企业。该公司今天宣布,美国国际贸易委员会(U.S. International Trade Commission, ITC)2024年11月7日发布的337调…

每日科技资讯:2024年11月09日【龙】农历十月初九 ---文末送书

目录 1.史上最强游戏CPU!9800X3D首发评测2.苹果喊话iPhone 13和14钉子户:16方方面面都升级了3.加拿大政府下令 TikTok 关闭该国业务,但应用仍可以继续访问4.OpenAI 刚刚花了超过 1000 万美元购买了Chat.com5.Max 加入打击密码共享行列6.微软可…

java中图片加载

在Java中,BufferedImage 类是用于处理图像的一个类,它属于 java.awt.image 包。以下是如何使用 BufferedImage 来加载图片的一个示例: import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.…

【零基础学习CAPL】——XML工程创建与使用详解

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 ——————————————————————————————————–—— 从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 文章目录 1.概述2.XML和CAPL/.NET之间的区别…

如何快速搭建一个spring boot项目

一、准备工作 1.1 安装JDK:确保计算机上已安装Java Development Kit (JDK) 8或更高版本、并配置了环境变量 1.2 安装Maven:下载并安装Maven构建工具,这是Spring Boot官方推荐的构建工具。 1.3 安装代码编辑器:这里推荐使用Inte…

【AtCoder】Beginner Contest 377-C.Avoid Knight Attack

Avoid Knight Attack 题目链接 Problem Statement There is a grid of N 2 N^2 N2 squares with N N N rows and N N N columns. Let ( i , j ) (i,j) (i,j) denote the square at the i i i-th row from the top ( 1 ≤ i ≤ N ) (1\leq i\leq N) (1≤i≤N) and j j…