首页 > 其他分享 >unity3d————坐标转换(世界转本地)

unity3d————坐标转换(世界转本地)

时间:2024-11-03 18:17:22浏览次数:5  
标签:unity3d 缩放 对象 局部 Vector3 transform 坐标 本地 坐标系

this.transform.InverseTransformPoint

1. 世界坐标系与局部坐标系
  • 世界坐标系:Unity3D 中的全局参考框架,所有游戏对象的位置、旋转和缩放都是相对于这个框架来定义的。
  • 局部坐标系:每个游戏对象都有自己的局部坐标系,这个坐标系是相对于该游戏对象的位置、旋转和缩放来定义的。
2. InverseTransformPoint 的作用

当你有一个在世界坐标系中的点,并且你想知道这个点在当前游戏对象的局部坐标系中的位置时,你可以使用 InverseTransformPoint 方法。

3. 使用方法

Vector3 worldPoint = new Vector3(x, y, z); // 世界坐标系中的点  
Vector3 localPoint = this.transform.InverseTransformPoint(worldPoint);

4. 实际应用

5. 注意事项

  • worldPoint:这是一个 Vector3 类型的变量,表示你想转换的世界坐标系中的点。
  • localPoint:这也是一个 Vector3 类型的变量,它将包含转换后的局部坐标系中的点。
  • 碰撞检测:如果你想知道一个世界空间中的点是否与某个游戏对象的局部空间中的某个区域相交,你可以先将这个点转换到该游戏对象的局部空间中,然后进行判断。
  • UI 定位:在将 UI 元素定位到世界空间中的特定位置时,可能需要先将世界坐标转换为局部坐标,以便在 UI 的局部坐标系中进行布局。
  • 摄像机视角:在处理摄像机视角和屏幕空间坐标时,有时需要将世界坐标转换为摄像机的局部坐标,以便进行进一步的计算。
  • 转换是基于当前游戏对象的 Transform 组件的,包括位置、旋转和缩放。
  • 如果游戏对象被缩放了,转换后的点可能会受到缩放的影响。
  • 这个方法不会改变原始点的位置,而是返回一个新的 Vector3 对象,表示在局部坐标系中的位置。

 this.transform.InverseTransformDirection
 this.transform.InverseTransformVector 

在Unity3D中,this.transform.InverseTransformDirectionthis.transform.InverseTransformVector是两个与坐标转换相关的API,它们都将世界坐标系(或全局坐标系)中的方向或向量转换到当前游戏对象的局部坐标系中。尽管这两个方法听起来很相似,但它们在处理向量时有着细微的差别。下面我将详细解释这两个API。

1. this.transform.InverseTransformDirection

作用

InverseTransformDirection方法用于将方向从世界坐标系转换到当前游戏对象的局部坐标系中。这个转换考虑了游戏对象的旋转,但不考虑其位置和缩放。

使用场景
  • 当你想要知道一个世界空间中的方向在当前游戏对象的局部空间中是如何表示的时,可以使用这个方法。
  • 这在处理角色的朝向、摄像机的视角方向或任何需要基于局部坐标系来判断方向的情况下都非常有用。
示例
Vector3 worldDirection = new Vector3(1, 0, 0); // 假设这是世界空间中的一个方向  
Vector3 localDirection = transform.InverseTransformDirection(worldDirection);

在这个例子中,localDirection将会是worldDirection在当前游戏对象的局部坐标系中的表示。

2. this.transform.InverseTransformVector

作用

InverseTransformVector方法也用于将向量从世界坐标系转换到局部坐标系中,但它与InverseTransformDirection的不同之处在于,它不仅考虑了旋转,还考虑了缩放。然而,需要注意的是,尽管方法名中包含“Vector”,但这个操作实际上并不改变向量的大小(长度),而是将其方向从世界空间转换到局部空间,并考虑了缩放因素对接方向的影响。这里的“向量”更多地是指具有方向和大小的量,但在转换过程中大小是不变的。

使用场景
  • 当你需要将一个世界空间中的力或速度向量应用到当前游戏对象上,并且希望这个向量能够正确地根据游戏对象的旋转和缩放来影响对象时,可以使用这个方法。
  • 这在处理物理碰撞、移动对象或应用力时非常有用。
示例
Vector3 worldVector = new Vector3(1, 0, 0); // 假设这是世界空间中的一个向量  
Vector3 localVector = transform.InverseTransformVector(worldVector);

在这个例子中,localVector将会是worldVector在当前游戏对象的局部坐标系中的方向表示,但大小(长度)保持不变。

注意事项

  • 这两个方法都不会改变原始向量的值,而是返回一个新的Vector3对象来表示转换后的结果。
  • 在使用这些方法时,要确保你理解它们之间的差异,特别是当处理涉及缩放的游戏对象时。
  • 转换是基于当前游戏对象的Transform组件的,包括其位置、旋转和缩放。但是,对于方向转换来说,位置是不相关的,而缩放只在InverseTransformVector中考虑。

 

标签:unity3d,缩放,对象,局部,Vector3,transform,坐标,本地,坐标系
From: https://blog.csdn.net/2401_82978699/article/details/143362647

相关文章

  • unity3d——Time
    在Unity3D中,Time类是一个非常重要的工具类,它提供了一系列与时间相关的属性和方法,帮助开发者在游戏中实现各种时间相关的操作。以下是一些Time类常用的方法及其示例:一、常用属性Time.time含义:表示从游戏开始到现在的时间,以秒为单位。该时间会随着游戏的暂停而停止计算。示例......
  • unity3d——Vector3
    在Unity3D中,Vector3是一个非常重要的结构体,用于表示三维空间中的位置和方向。以下是关于Vector3的一些关键知识点:一、Vector3的基本概念和属性定义:Vector3是一个包含三个浮点数的结构体,分别代表X、Y和Z轴上的分量。它用于描述具有大小和方向两个属性的物理量,如速度、加速度......
  • CentOS基于nginx构建本地YUM仓库
    #0.开启yum下载缓存sed-i'3ckeepcache=1'/etc/yum.conf#1.安装插件yuminstall-yyum-plugin-downloadonlycreatereporsync#2.创建仓库目录mkdir-p/mirrors/centos#3.下载文件或上传文件yuminstallnginx-y--downloadonly--downloaddir=/mirrors/centos#只下载......
  • HarmonyOS:使用本地真机运行应用/服务
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18523167➤如果链接不是为敢技术的博客园地址,则可能......
  • jpeg,png,bmp转换成icon,windows本地导出icon文件
    前言通过软件icon-maker实现将文件格式转换目前主流皆为网页在线转换,有时迫于环境原因,需要离线状态的转换工作于是有了本篇文章目录前言安装链接安装移动软件位置(可选)输入注册码安装链接官方链接:https://zh.softorbits.net/icon-maker/软件分享链接(百度网盘):......
  • 项目发布GitHub完全指南 - 从本地到开源
    引言将项目发布到GitHub不仅能方便版本管理,还能与全球开发者分享你的代码。本文将详细介绍如何将一个完整项目发布到GitHub的全过程,包括前期准备、具体操作步骤以及最佳实践。一、前期准备工作1.1环境准备安装Git#Windows用户可以下载Git官方安装包#Mac用户可以使用ho......
  • 鸿蒙Next应用本地化:资源管理
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在应用本地化中资源管理方面的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在鸿蒙Next......
  • 鸿蒙Next应用本地化:翻译场景的重要性
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在应用本地化中翻译场景方面的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在鸿蒙Next......
  • Geogebra基础篇021—Geogebra的线工具:线段、直线、射线、给定长度的线段、从点出发的
    注意:关注微信公众号“第五智能”,免费查阅全系列文章(或者微信顶部直接搜索“Geogebra的线工具”就可以找到了)。上一篇是点工具,这一篇赶紧把线工具记录一下,基础篇早日完稿我们就可以研究更有意思的动画技巧了。Geogebra的线工具主要包括:线段(Segment)、直线(Line)、射线(Ray)、给定......
  • 网易云课堂视频课件课程下载工具,如何在电脑端下载网易云课堂视频课程课件资料到本地?
    一.安装网易云课堂课程下载器1.获取学无止下载器https://www.xuewuzhi.cn/study163_downloader2.下载安装后,然后点击桌面快捷方式运行即可。注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。二.使用说明1.学无止下载器介......