untiy 连接两个UI或一段固定一段跟随鼠标移动的线段

news2024/11/25 4:25:08

注意,仅适用于UI,且Canvas必须是Camera模式,不能用在3D物体上,3D物体请使用LineRenender

先创建一个图片,将锚点固定在左边
在这里插入图片描述
然后在脚本中添加如下内容

		public RectTransform startObj;//起点物体
		public RectTransform endObj;//终点物体
        public Camera camera;//Canvas的相机
        
        private void CalcuateLine()//计算线的宽度和角度
        {
            if (startObj == null) return;
            //设置长度和角度
            Vector2 startPosition = Vector2.zero;
            Vector2 endPosition = Vector2.zero;
            //计算起点的世界坐标
            startPosition = RectTransformUtility. WorldToScreenPoint(camera,startObj.position);
            //计算终点的世界坐标
            if (endObj != null)//如果有结束物体,以结束物体为终点
            {
                endPosition = RectTransformUtility.WorldToScreenPoint(camera, endObj.position);
            }
            else//如果没有结束物体,以鼠标位置为终点
            {
                endPosition = Input.mousePosition;
            }
            //计算长度
            float dis = Vector2.Distance(startPosition,endPosition);
            //设置长度
            rectTransform.sizeDelta = new Vector2(dis,rectTransform.rect.height); 
            //计算角度
            Vector3 dir = endPosition - startPosition;
            float angle = Vector3.Angle(Vector3.right, dir);
            Vector3 cross = Vector3.Cross(Vector3.right, dir);
            float dirF = cross.z > 0 ? 1 : -1;
            angle = angle * dirF;
            //设置角度
            rectTransform.localEulerAngles = new Vector3(0,0,angle);

            //设置起点位置
            Vector2 startLocalPostion = Vector2.zero;
            RectTransformUtility.ScreenPointToLocalPointInRectangle(contentRectTransform, startPosition,camera,out startLocalPostion);
            rectTransform.localPosition = startLocalPostion;
        }

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

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

相关文章

软件测试基本准侧与方法摘录

软件测试基本准侧与方法的摘录(应用实例待补充) 写在最开始:“测试是为发现错误而执行程序的过程”。————《软件测试的艺术》 🤩 本文中很多概念描述摘抄自还有很多概念没有列举。已写的部分概念缺少相应的实例,尚…

Java课题笔记~ Spring事务的程序举例环境搭建

举例:购买商品 trans_sale 项目 本例要实现购买商品,模拟用户下订单,向订单表添加销售记录,从商品表减少库存。 实现步骤: Step0:创建数据库表 创建两个数据库表 sale , goods sale 销售表:…

2021年03月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 下列哪个操作不能退出IDLE环境? A:AltF4 B:CtrlQ C:按ESC键 D:exit() 正确的答案是:B:CtrlQ 解…

LM2596S-adj电源芯片应用电路

手边有两块降压电源模块,使用芯片为LM2596S-adj,手册中给的使用电路为: 市面上买到的模块为: 电路为: 对比后发现苏守坤博客中存在错误,原博客中实物图应为输出可调的电源模块,博主所画原理…

深入理解PyTorch中的NoamOpt优化器

深入理解PyTorch中的NoamOpt优化器 作者:安静到无声 个人主页 今天,我们将深入探讨一个在自然语言处理领域广泛使用的优化器——NoamOpt。这个优化器是基于PyTorch实现的,并且在"Attention is All You Need"这篇论文中首次提出。…

若依后台管理系统06

哈喽!大家好,我是旷世奇才李先生 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟,回复【项目】获取我为大家准备的项目 最近打算把我手里之前做的项目分享给大家&#…

Rivian:一家已经在全球电动汽车领域站稳脚跟的热门电动汽车公司

来源:猛兽财经 作者 :猛兽财经 总结: (1)Rivian(RIVN)是全球电动汽车市场的主要参与者,由于全球电动汽车市场的不断增长和亚马逊(AMZN)的持续支持&#xf…

Blob的一些使用 - 下载、图片预览、切片上传

Blob Blob: 前端专门用于支持文件操作的二进制对象 File: 一种特殊的Blob对象 文件下载 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

Qt应用开发(基础篇)——信号槽 Signals and Slots

一、前言 Qt成为我们今天拥有的灵活而舒适的工具&#xff0c;除了友好和能够快速开发设计师界面&#xff0c;信号槽机制是最大的核心特征&#xff0c;也是区别于其他开发框架最大的优势。 Qt的信号槽作用于两个对象之间的通信。当一个对象发生了改变&#xff0c;它希望其他关心…

Windows下安装 Redis

目录 1.下载 1.1.Redis官网 1.2.github下载地址 2.安装步骤 2.1.解压Redis压缩包 2.2.创建临时服务 2.3.启动客户端 2.4.注册Redis服务 3.总结 4.致谢 1.下载 1.1.Redis官网 Download | Redis Redis 官方网站没有提供 Windows 版的安装包&#xff0c;但可以通过…

Django实现音乐网站 ⑻

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是后台对单曲原有功能的基础上进行部分功能实现和显示优化。 目录 新增编辑 歌手下拉显示修改 设置歌曲时长 安装eyed3库 获取mp3时长 歌曲时长字段修改 重写save方法 增加歌手单曲数量 查询歌手单曲数量 …

算法通关村——二分查找在拓展中的应用

1. 山脉数组的峰顶索引 山脉数组的峰顶索引 符合下列属性的数组 arr 称为 山脉数组 &#xff1a; arr.length > 3 存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] < arr[1] < … arr[i-1] < arr[i] arr[i] > arr[i1] >…

企业计算机被_locked勒索病毒攻击如何处理及后期如何做好预防工作

随着信息技术的普及和不断发展&#xff0c;勒索病毒攻击已成为企业面临的一项严峻挑战。近期&#xff0c;山西某医药公司的计算机服务器被_locked勒索病毒攻击&#xff0c;导致企业的许多重要数据被加密&#xff0c;当发现企业的服务器被该勒索病毒攻击时&#xff0c;该企业的做…

初识mysql数据库之引入mysql客户端库

目录 一、下载第三方库 1. 准备工作 1. 使用mysql官网提供的库 2. yum源安装 二、测试第三方库是否可用 三、mysql常用接口介绍 1. 查看官方文档 2. 初始化 3. 关闭mysql 4. 连接mysql 5. 下达sql指令 四、一个简单的C客户端库连接mysql程序 1. 头文件 2. 初始化…

maven 删除下载失败的包

本文介绍了当Maven包报红时&#xff0c;使用删除相关文件的方法来解决该问题。文章详细说明了_remote.repositories、.lastUpdated和_maven.repositories文件的作用&#xff0c;以及如何使用命令行删除这些文件。这些方法可以帮助开发者解决Maven包报红的问题&#xff0c;确保项…

赛码网-圈地运动 100%AC代码(C)

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在准备秋招&#xff0c;一直在练习编程。 ⏩本篇文章对赛码网的圈地运动 题目做一…

LeetCode 热题 100 JavaScript -- 74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非递减顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 …

迁移协调器:方法和模式

Migration Coordinator &#xff08;迁移协调器&#xff09;是一款完全免费的工具&#xff0c;内置于 NSX Data Center 中&#xff0c;可帮助将NSX for vSphere迁移到 NSX&#xff08;又名 NSX-T&#xff09;。Migration Coordinator最初是在 NSX-T 2.4 中引入的&#xff0c;有…

在外SSH远程连接Ubuntu系统

在外SSH远程连接Ubuntu系统【无公网IP】 文章目录 在外SSH远程连接Ubuntu系统【无公网IP】前言1. 在Ubuntu系统下安装cpolar软件2. 完成安装后打开cpolar客户端web—UI界面3. 创建隧道取得连接Ubuntu系统公网地址4. 打开Windows的命令界面并输入命令 前言 随着科技和经济的发展…

RK3568 lunch新增设备

rk3568 android9.0 &#xff0c;32位平台 1.进入devices/rockchip/rk356x/ 将rk3568_box_32 拷贝一份&#xff0c;命名为hdx6 2.打开vendorsetup.sh,添加lunch选项 add_lunch_combo hdx6-user add_lunch_combo hdx6-userdebug 3.进入hdx6&#xff0c;修改rk3568_box_32.mk…