当前位置: 首页 > news >正文

Unity世界坐标转成UI坐标

Unity世界坐标转成UI坐标

  • 介绍
  • 转换代码
  • 合并方法
  • 总结

介绍

在Unity中官方提供了很多坐标转换的API,但是还没有一个API是将世界坐标系转换成UI的坐标系,世界坐标系在屏幕中的位置是不固定的所以有时候需要转换成UI坐标系**(注意这里不是转换成屏幕坐标,而是UI坐标)**

转换代码

需要先将世界坐标转换成屏幕坐标,然后在将屏幕坐标转换成UI坐标

世界坐标转屏幕坐标

//需要转换的世界坐标
Vector3 worldPostion = new Vector3(0f, -3f, 0);
//世界坐标转换成屏幕坐标
Vector3 screenPosition = Camera.main.WorldToScreenPoint(worldPostion );

将屏幕坐标转换成UI坐标

//转换后的UI坐标
Vector2 localPosition;
//UI组件
RectTransform uiRectTransform;
//将屏幕坐标转换成UI的local坐标
RectTransformUtility.ScreenPointToLocalPointInRectangle(uiRectTransform, screenPosition, Camera.main, out localPosition);
//UI坐标赋值
uiRectTransform.anchoredPosition += localPosition;

合并方法

整理上述合并方法

		/// <summary>/// 世界坐标转换成UI坐标(直接赋值)/// </summary>/// <param name="worldPos">需要转换的世界坐标</param>/// <param name="uiRect">需要转换坐标的UI</param>private void WorldToUIPos(Vector3 worldPos, RectTransform uiRect){//世界坐标转屏幕坐标Vector3 screenPosition = Camera.main.WorldToScreenPoint(worldPos);// 将屏幕坐标转换为 UI 面板的本地坐标Vector2 localPosition;//将屏幕坐标转换成UI的local坐标RectTransformUtility.ScreenPointToLocalPointInRectangle(uiRect, screenPosition, Camera.main, out localPosition);//坐标赋值uiRect.anchoredPosition += localPosition;}/// <summary>/// 世界坐标转换成UI坐标(手动赋值)/// </summary>/// <param name="worldPos">需要转换的世界坐标</param>/// <param name="uiRect">需要转换坐标的UI</param>/// <returns></returns>private Vector2 WorldToUIPosWithReturn(Vector3 worldPos, RectTransform uiRect){//世界坐标转屏幕坐标Vector3 screenPosition = Camera.main.WorldToScreenPoint(worldPos);// 将屏幕坐标转换为 UI 面板的本地坐标Vector2 localPosition;//将屏幕坐标转换成UI的local坐标RectTransformUtility.ScreenPointToLocalPointInRectangle(uiRect, screenPosition, Camera.main, out localPosition);//注意这个地方的localPostion需要跟原坐标做+=不是直接赋值return localPosition;}

总结

感谢大家的支持!

相关文章:

Unity世界坐标转成UI坐标

Unity世界坐标转成UI坐标 介绍转换代码合并方法总结 介绍 在Unity中官方提供了很多坐标转换的API&#xff0c;但是还没有一个API是将世界坐标系转换成UI的坐标系&#xff0c;世界坐标系在屏幕中的位置是不固定的所以有时候需要转换成UI坐标系**&#xff08;注意这里不是转换成…...

自制游戏——斗罗大陆

很简陋&#xff0c;没有图&#xff0c;请见谅 // mine[0] 级数 // mine[1] 战力 //mine[2] 1 白虎 //mine[2] 2 昊天锤 //mine[2] 3 蓝银草 #include <bits/stdc.h> using namespace std; int mine[100],live3, dou 1, luo 1, da 1, bag[1000], huan 0, lia…...

MindStudio制作MindSpore TBE算子(四)算子测试(ST测试-Ascend910B/ModelArts)--失败尝试

上一节&#xff0c;MindStudio制作MindSpore TBE算子&#xff08;三&#xff09;算子测试&#xff08;ST测试&#xff09;&#xff0c;因此缺乏对应的硬件环境导致无法进行ST测试&#xff0c;导致难以自安&#xff0c;今天搞来Ascend910B服务器来填坑&#xff0c;看看是否是硬件…...

二、交换机的vlan子设备接入

一、交换机的vlan设置-CSDN博客 二、交换机的vlan子设备接入-CSDN博客 接上篇的文章&#xff0c;本文接入了子设备 网络结构如下&#xff1a; 用路由器A和POE交换机B代替第一篇中的笔记本电脑&#xff0c;路由器A和交换机B都关闭DHCP服务&#xff0c;并分别接入一个IPC&#…...

EFCore相关知识分享

EFCore相关知识分享 文章目录 EFCore相关知识分享前言EFCore 的优势SaveChang的作用EF Core 查询优化小技巧使用投影&#xff08;投影到所需的数据类型&#xff09;延迟加载&#xff08;Lazy Loading&#xff09;与显式加载&#xff08;Eager Loading&#xff09;使用 AsNoTrac…...

检测网络安全漏洞 工具 网络安全 漏洞扫描 实验

实验一的名称为信息收集和漏洞扫描 实验环境&#xff1a;VMware下的kali linux2021和Windows7 32&#xff0c;网络设置均为NAT&#xff0c;这样子两台机器就在一个网络下。攻击的机器为kali,被攻击的机器为Windows 7。 理论知识记录&#xff1a; 1.信息收集的步骤 2.ping命令…...

deepseek + kimi 高效生成PPT

1.在deepseek中生成ppt大纲 2.将大纲复制到kimi中生成PPT kimi&#xff1a;https://kimi.moonshot.cn/...

JavaWeb学习-Mybatis(增删改查)

(一)Mybatis入门程序 1.创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包。(项目工程创建完成后,自动在pom.xml文件中,导入Mybatis依赖和MySQL驱动依赖) <dependencies> <!-- mybatis起步依赖 --> <dependency> …...

软考高项(二十四)法律法规和标准规范 ★重点集萃★

&#x1f451; 个人主页 &#x1f451; &#xff1a;&#x1f61c;&#x1f61c;&#x1f61c;Fish_Vast&#x1f61c;&#x1f61c;&#x1f61c; &#x1f41d; 个人格言 &#x1f41d; &#xff1a;&#x1f9d0;&#x1f9d0;&#x1f9d0;说到做到&#xff0c;言出必行&am…...

Django中select_related 的作用

Django中这句代码Dynamic.objects.select_related(song)是什么意思&#xff1f; 在 Django 中&#xff0c;这句代码&#xff1a; Dynamic.objects.select_related(song) 的作用是 在查询 Dynamic 模型的同时&#xff0c;预加载 song 关联的外键对象&#xff0c;从而减少数据…...

vscode无法ssh连接远程机器解决方案

远程服务器配置问题 原因&#xff1a;远程服务器的 SSH 服务配置可能禁止了 TCP 端口转发功能&#xff0c;或者 VS Code Server 在远程服务器上崩溃。 解决办法 检查 SSH 服务配置&#xff1a;登录到远程服务器&#xff0c;打开 /etc/ssh/sshd_config 文件&#xff0c;确保以下…...

计算机组成原理——中央处理器(九)

在每一个清晨醒来&#xff0c;你都有一个全新的机会去塑造你的世界。无论昨日经历了多少风雨&#xff0c;今天的你依旧可以启航向梦想的彼岸。生活或许会给你设置障碍&#xff0c;但请相信&#xff0c;这些都是通往成功的垫脚石。不要让短暂的困境遮蔽了你的视野&#xff0c;因…...

网页版贪吃蛇小游戏开发HTML实现附源码!

项目背景 贪吃蛇是一款经典的休闲小游戏&#xff0c;因其简单易玩的机制和丰富的变形而深受玩家喜爱。本次开发目标是实现一款网页版贪吃蛇小游戏&#xff0c;并通过前端与后端结合的方式&#xff0c;提供一个流畅的在线体验。 实现过程 游戏逻辑设计 蛇的移动&#xff1a;…...

基于java ssm springboot选课推荐交流平台系统设计和实现

基于JavaWeb开发的 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#x1f4dd; &#x1f680;&…...

Sigma-Aldrich化学品安全技术说明书(SDS)查询教程

在当今的现代工业体系里&#xff0c;化学品的应用极为广泛&#xff0c;贯穿于众多行业的生产环节。以电子、皮革、玩具、工艺品、家具制造等行业为例&#xff0c;有机溶剂的使用频率颇高&#xff0c;这虽极大地推动了生产的发展&#xff0c;却也埋下了风险隐患。在这些企业中&a…...

嵌入式实训室解决方案(2025年最新版)

一、背景概述 随着信息技术的迅猛进步&#xff0c;嵌入式系统已成为智能化设备与应用的核心驱动力&#xff0c;引领产业变革与创新。其应用范围广泛&#xff0c;涵盖智能家居、智能医疗、工业控制、交通及网络通信等领域&#xff0c;是信息化与智能化转型的关键。在此背景下&am…...

Spring Cloud — 深入了解Eureka、Ribbon及Feign

Eureka 负责服务注册与发现&#xff1b;Ribbon负责负载均衡&#xff1b;Feign简化了Web服务客户端调用方式。这三个组件可以协同工作&#xff0c;共同构建稳定、高效的微服务架构。 1 Eureka 分布式系统的CAP定理&#xff1a; 一致性&#xff08;Consistency&#xff09;&am…...

全排列(力扣46)

这道题让我们求这个集合有多少种排列方式&#xff0c;那么与之前组合问题的不同就在于要考虑元素之间的顺序了&#xff0c;所以每一层递归的or循环的起始值无需变量控制&#xff0c;都从0开始。但是一个排列中不能出现相同元素&#xff0c;所以别忘了去重&#xff0c;这里的去重…...

Mac部署Jenkins 一

Mac部署Jenkins 一 一.Jenkins 部署依赖 JDK 环境 查看 Mac JDK 环境&#xff0c;如果没有安装&#xff0c;先安装 打开终端输入命令:java -version Mac安装配置 JDK 二. 检查 HomeBrew 安装 检查 HomeBrew 是否安装&#xff0c;终端输入命令:brew -v Mac安装HomeBrew …...

附录1:组维英文简写大全

附录1&#xff1a;组维英文简写大全 中央处理器 一、技术与厂商 FSB 前端总线频率 HT 超线程技术 Intel 英特尔 AMD 美国超微 VIA 威盛 二、CPU插座 Slot 针插式 ZIF 零插拔力的插座 Socket 触点式 LGA &#xff08;IntelCPU封装形式名称&#xff09; 三…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...