unity 之Transform组件(汇总)

文章目录

  • 理论指导
  • 结合例子

在这里插入图片描述

理论指导

当在Unity中处理3D场景中的游戏对象时,Transform 组件是至关重要的组件之一。它管理了游戏对象的位置、旋转和缩放,并提供了许多方法来操纵和操作这些属性。以下是关于Transform 组件的详细介绍:

  1. 位置(Position):
    Transform 组件的 position 属性表示游戏对象在世界坐标系中的位置。这是一个 Vector3 类型的属性,表示对象在 x、y 和 z 轴上的坐标。可以直接访问和修改这个属性,例如:
    transform.position = new Vector3(1, 0, 0);
    将游戏对象的位置设置为 (1, 0, 0)。

  2. 旋转(Rotation):
    Transform 组件的 rotation 属性表示游戏对象的旋转。这是一个 Quaternion 类型的属性,用于表示旋转的四元数。
    可以通过
    Quaternion.Euler()
    方法创建一个 Quaternion,也可以使用角度表示欧拉角(Euler Angles)来设置旋转,例如:
    transform.rotation = Quaternion.Euler(0, 90, 0);
    将游戏对象绕 y 轴旋转 90 度。

  3. 缩放(Scale):
    Transform 组件的 localScale 属性表示游戏对象的缩放。这是一个 Vector3 类型的属性,表示对象在 x、y 和 z 轴上的缩放比例。可以通过修改这个属性来改变游戏对象的大小,
    例如:transform.localScale = new Vector3(2, 2, 2);
    将游戏对象放大为原来的两倍。

  4. 父子关系(Parent-Child Relationship):
    Transform 组件的一个强大之处是它支持父子关系。通过将一个游戏对象的 Transform 设置为另一个游戏对象的 transform 的子级,可以将对象组织成层次结构。子对象的变换将受到父对象变换的影响,比如父对象移动时,所有子对象也会相对移动。

  5. 世界坐标与局部坐标:
    Transform 组件提供了 Transform.positionTransform.rotationTransform.localScale 这些属性来操作游戏对象的世界坐标。同时,还有 Transform.localPositionTransform.localRotationTransform.localScale 这些属性,用于操作游戏对象的局部坐标。局部坐标是相对于父对象的坐标系而言的。

  6. 方法和功能:
    Transform 组件还提供了许多用于操作和查询变换信息的方法,如 Translate() 用于移动对象、Rotate() 用于旋转对象等。

总的来说,Transform 组件是Unity中操作和管理游戏对象变换的核心组件。通过它,您可以控制对象的位置、旋转和缩放,以及对象之间的层次关系,从而构建出复杂的3D场景和交互。

结合例子

定义了一个 Transform 对象后,您可以使用它来操纵与游戏对象相关的变换属性和操作。下面是一些使用 Transform 对象的常见用法:

  1. 获取和修改位置、旋转和缩放:
    您可以通过访问 Transform 的属性来获取和修改游戏对象的位置、旋转和缩放。例如:

    Vector3 currentPosition = transform.position;
    Quaternion currentRotation = transform.rotation;
    Vector3 currentScale = transform.localScale;transform.position = new Vector3(2, 0, 0); // 修改位置
    transform.rotation = Quaternion.Euler(0, 45, 0); // 修改旋转
    transform.localScale = new Vector3(2, 2, 2); // 修改缩放
    
  2. 移动和旋转对象:
    使用 Translate() 方法可以相对于当前坐标移动对象,而 Rotate() 方法可以在当前旋转基础上旋转对象。例如:

    transform.Translate(Vector3.forward * Time.deltaTime); // 沿着前方移动
    transform.Rotate(Vector3.up * Time.deltaTime); // 绕y轴旋转
    
  3. 获取世界坐标和局部坐标:
    您可以使用 positionlocalPosition 属性来获取游戏对象的世界坐标和局部坐标。世界坐标是相对于场景原点的坐标,而局部坐标是相对于父对象的坐标系。例如:

    Vector3 worldPosition = transform.position;
    Vector3 localPosition = transform.localPosition;
    
  4. 父子关系的管理:
    您可以使用 parent 属性来设置游戏对象的父对象,从而创建父子关系。这样,子对象的变换会相对于父对象进行变换。例如:

    Transform parentTransform = otherGameObject.transform;
    transform.parent = parentTransform; // 将当前对象设为另一个对象的子对象
    
  5. 坐标系转换:
    有时候需要在不同坐标系之间进行转换,您可以使用 Transform 对象的方法来进行这种转换。例如,Transform.TransformPoint() 可以将局部坐标转换为世界坐标,Transform.InverseTransformPoint() 可以将世界坐标转换为局部坐标。

总之,Transform 对象提供了许多方法和属性,使您能够在3D场景中管理和操作游戏对象的变换。它是构建游戏世界和实现动画、交互等方面的重要工具。

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

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

相关文章

react与vue的区别

React和Vue.js是两个流行的JavaScript库/框架,用于构建用户界面。以下是React和Vue之间的一些主要区别: 学习曲线:Vue.js对于新手来说比React更容易学习和上手。 构建方式:React强调组件的可重用性,而Vue.js更注重模板…

C++进阶 特殊类的设计

本篇博客介绍:介绍几种特殊的类 特殊类的设计 设计一个类不能被拷贝设计一个类 只能在堆上创建对象设计一个类 只能在栈上创造对象设计一个类不能被继承单例模式饿汉模式懒汉模式单例模式对象的释放问题 总结 设计一个类不能被拷贝 我们的拷贝只会发生在两个场景当…

rust学习-打印结构体中的vec

write! 宏 将格式化后的数据写入到一个缓冲区(buffer),而不是直接打印到标准输出或文件中。 这个缓冲区可以是字符串,也可以是需要写入的文件的缓冲区。 write!(writer, format_string, expr1, expr2, ...);writer 参数是一个实…

利用POM完成脚本分离实现企业级自动化(POM设计模式+页面的框架封装+测试报告截图)

利用POM完成脚本分离实现企业级自动化(POM设计模式页面的框架封装测试报告截图) 项目-测试-手工测试 项目-测试-手工测试 1.了解需求; 2.编写测试用例(开始)——功能测试组会去做的事情 3.执行测试用例——发送测试报…

Mac 开发 Tang Nano FPGA 指南(使用终端和使用 VS Code 和插件,适用所有 Gowin FPGA)

最近收到了一个 Tang nano 9K FPGA开发板,就想借此机会研究一下。 官方文档里介绍如果想使用高云的 FPGA,就需要使用 GOWIN IDE,但是需要申请 license 提交一堆资料,我是别人送的就不太方便让别人弄。加上 IDE 其实并不是很适合学…

C#语音播报问题之 无法嵌入互操作类型SpVoiceClass,请改用适用的窗口

C#语音播报问题之 无法嵌入互操作类型SpVoiceClass,请改用适用的窗口 解决办法如下: 只需要将引入的Interop.SpeechLib的属性嵌入互操作类型改为false 改为false 即可解决!

SpringCloud新人入门手册

一、SpringBoot流程图 二、创建一个单pom项目改为父子pom项目 0、检查idea是否在父模块pom中生成子模块 <modules><module>eureka</module></modules> 1、子模块pom.xml添加 <dependencies><dependency><groupId>org.springframew…

k8s ----POD控制器详解

目录 一&#xff1a;pod控制器 1、Pod控制器及其功用 2、pod控制器类型 3、Pod与控制器之间的关系 二&#xff1a;Deployment 三&#xff1a;SatefulSet 1、StatefulSet组成 2、为什么要有headless&#xff1f; 3、为什么要有volumeClaimTemplate&#xff1f; 4、实现…

golang云原生项目之:etcd服务注册与发现

服务注册与发现&#xff1a;ETCD 1直接调包 kitex-contrib&#xff1a; 上面有实现的案例&#xff0c;直接cv。下面是具体的理解 2 相关概念 EtcdResolver: etcd resolver是一种DNS解析器&#xff0c;用于将域名转换为etcd集群中的具体地址&#xff0c;以便应用程序可以与et…

flutter-移动端适配

不同屏幕之间的尺寸适配 使用插件 flutter_screenutil flutter_screenutil flutter 屏幕适配方案&#xff0c;用于调整屏幕和字体大小的flutter插件&#xff0c;让你的UI在不同尺寸的屏幕上都能显示合理的布局! 安装 # add flutter_screenutil flutter_screenutil: ^5.8.4 o…

Servlet+JDBC实战开发书店项目讲解第9篇:VIP等级优惠实现

ServletJDBC实战开发书店项目讲解第9篇&#xff1a;VIP等级优惠实现 介绍 在这篇博客中&#xff0c;我们将讲解如何在书店项目中实现VIP等级优惠功能。VIP等级优惠是一种常见的商业策略&#xff0c;可以吸引更多的顾客并提高销售额。我们将使用Servlet和JDBC来实现这个功能。…

04_15页表缓存(TLB)和巨型页

前言 linux里面每个物理内存(RAM)页的一般大小都是4kb(32位就是4kb),为了使管理虚拟地址数变少 加快从虚拟地址到物理地址的映射 建议配值并使用HugePage巨型页特性 cpu和mmu和页表缓存(TLB)和cache和ram的关系 CPU看到的都是虚拟地址&#xff0c;需要经过MMU的转化&#xf…

ES的索引结构与算法解析

提到ES&#xff0c;大多数爱好者想到的都是搜索引擎&#xff0c;但是明确一点&#xff0c;ES不等同于搜索引擎。不管是谷歌、百度、必应、搜狗为代表的自然语言处理(NLP)、爬虫、网页处理、大数据处理的全文搜索引擎&#xff0c;还是有明确搜索目的的搜索行为&#xff0c;如各大…

ELKstack-Elasticsearch配置与使用

一. 部署前准备 最小化安装 Centos 7.x/Ubuntu x86_64 操作系统的虚拟机&#xff0c;vcpu 2&#xff0c;内存 4G 或更多&#xff0c; 操作系统盘 50G&#xff0c;主机名设置规则为 es-server-nodeX &#xff0c; 额外添加一块单独的数据磁盘 大小为 50G 并格式化挂载到/data/e…

VSCode快捷键

CtrlShiftP&#xff0c;F1&#xff1a;显示命令面板 CtrlP&#xff1a;快速打开 CtrlShiftN&#xff1a;新窗口/实例 CtrlShiftW&#xff1a;关闭窗口/实例 CtrlX&#xff1a;剪切行 CtrlC&#xff1a;复制行 ALT↑/↓&#xff1a;上下移动 ShiftAlt↓/↑&#xff1a;向…

音视频 ffmpeg命令分类查询

命令参数内容-version显示版本 -bsfs 显示可用比特流filter-buildconf显示编译配置-formats显示可用格式(muxersdemuxers)-muxers显示可用复用器-demuxers显示可用解复用器-codecs显示可用编解码器(decodersencoders)-decoders显示可用解码器-encoders显示可用编码器-bsfs显示可…

使用Scikit-Learn实现多标签分类,助力机器学习

大家好&#xff0c;在机器学习任务中&#xff0c;分类是一种监督学习方法&#xff0c;用于根据输入数据预测标签。例如&#xff0c;我们想要根据历史特征预测某人是否对销售优惠感兴趣&#xff0c;通过使用可用的训练数据训练机器学习模型&#xff0c;可以对输入数据执行分类任…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)八:自定义组件封装上

一、本章内容 本章实现一些自定义组件的封装,包括数据字典组件的封装、下拉列表组件封装、复选框单选框组件封装、单选框组件封装、文件上传组件封装、级联选择组件封装、富文本组件封装等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 ![在这里插入图…

Python应用工具-Jupyter Notebook

工具简介 Jupyter Notebook是 基于 网页的用于交互计算的 应用程序&#xff0c;以网页的形式打开&#xff0c;可以在网页页面中直接编写代码和运行代码&#xff0c;代码的运行结果也会直接在代码块下 显示&#xff0c;文档是保存为后缀名为 . ipynb 的 JSON 格式文件。 操作指令…

使用Spring Initializr方式构建Spring Boot项目

除了可以使用Maven方式构建Spring Boot项目外&#xff0c;还可以通过Spring Initializr方式快速构建Spring Boot项目。从本质上说&#xff0c;Spring lnitializr是一个Web应用&#xff0c;它提供了一个基本的项目结构&#xff0c;能够帮助我们快速构建一个基础的Spring Boot项目…