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

Unity 模拟百度地图,使用鼠标控制图片在固定区域内放大、缩小、鼠标左键拖拽移动图片

效果展示:

步骤流程:

1.使用的是UGUI,将下面的脚本拖拽到图片上即可。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;public class CheckImage : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerEnterHandler, IPointerExitHandler
{public float MaxRange = 5f;public float MinRange = 0.5f;private Vector3 offPos;private Vector3 arragedPos;private bool isEnter = false;private bool isDrag = false;void Update(){if (!isEnter) return;if (!isDrag){SetPivotAndPos();if (Input.GetAxis("Mouse ScrollWheel") > 0){transform.localScale += (transform.localScale.x >= MaxRange ? Vector3.zero : Vector3.one * 0.1f);}else if (Input.GetAxis("Mouse ScrollWheel") < 0){transform.localScale -= (transform.localScale.x <= MinRange ? Vector3.zero : Vector3.one * 0.1f);}}}public void OnBeginDrag(PointerEventData eventData){isDrag = true;if (RectTransformUtility.ScreenPointToWorldPointInRectangle(transform.GetComponent<RectTransform>(), Input.mousePosition, null, out arragedPos)){offPos = transform.position - arragedPos;}}public void OnDrag(PointerEventData eventData){transform.position = offPos + Input.mousePosition;}public void OnEndDrag(PointerEventData eventData){transform.position = offPos + Input.mousePosition;isDrag = false;}public void OnPointerEnter(PointerEventData eventData){isEnter = true;}public void OnPointerExit(PointerEventData eventData){isEnter = false;}private void SetPivotAndPos(){float OffsetX = Input.mousePosition.x - transform.position.x;float OffsetY = Input.mousePosition.y - transform.position.y;float PivotX = OffsetX / transform.GetComponent<RectTransform>().rect.width / transform.localScale.x;float PivotY = OffsetY / transform.GetComponent<RectTransform>().rect.height / transform.localScale.y;transform.GetComponent<RectTransform>().pivot += new Vector2(PivotX, PivotY);transform.localPosition += new Vector3(OffsetX, OffsetY, 0);}
}

2.再给图片的父物体添加个Mask遮罩就ok了。


http://www.mrgr.cn/news/78981.html

相关文章:

  • JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南
  • python数据分析之爬虫基础:爬虫介绍以及urllib详解
  • 级联树结构TreeSelect和上级反查
  • Bootstrap-HTML(二)深入探索容器,网格系统和排版
  • com.github.gavlyukovskiy依赖是做什么的呢?
  • graph rag 如何实现图谱支撑文本生成任务增强
  • Seatunnel解决ftp读取json文件无法读取数组以及格式化之后的json无法解析的问题
  • AllegroHand 四指灵巧手:机器人领域的创新力量
  • 十,[极客大挑战 2019]Secret File1
  • SciPy Optimize和 CVXPY对比
  • Selenium常见问题
  • 生态环境影像评价、遥感解译与GIS技术生态环境影像评价制作
  • k8s的数据库etcd报 etcdserver: mvcc: database space exceeded的处理办法
  • 三维地形图计算软件(四)-用PYQT5+vtk画任意多面示例
  • Android显示系统(02)- OpenGL ES - 概述
  • 活着就好20241204
  • 项目开发中Vue3和Vue2如何选择?
  • c语言基础之二维数组
  • OD B卷 - 实现 【BOSS的收入】
  • 吉林大学23级数据结构上机实验(第7周)
  • 使用 CFD 仿真进行阀门性能分析:第 II 部分
  • Java 基础面试题
  • Spring入园须知
  • 计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • cf EC 172 C(0->-1 的转化+区间和使用前缀和表示,化简式子)+ D(二维的信息,先对一维排序,另一维看情况分析)
  • C语言:指针与数组