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

浙江耀华建设集团网站网站建设需求 百度文库

浙江耀华建设集团网站,网站建设需求 百度文库,中国网站建设公司排名,宜昌网站建设宜昌获得视口宽高 拖动视口会改变屏幕宽高数值 MousePosition 屏幕坐标系的原点在左下角,MousePosition返回Z为0也就是纵深为0的Vector3 但是如果鼠标超出屏幕范围不会做限制,所以可能出现负数或者大于屏幕宽高的情况,做鼠标拖拽物体时需要注…

获得视口宽高

拖动视口会改变屏幕宽高数值
在这里插入图片描述

MousePosition

屏幕坐标系的原点在左下角,MousePosition返回Z为0也就是纵深为0的Vector3

但是如果鼠标超出屏幕范围不会做限制,所以可能出现负数或者大于屏幕宽高的情况,做鼠标拖拽物体时需要注意是否需要跟随超出屏幕
在这里插入图片描述
下面这个写法是不对的,获得鼠标的屏幕位置纵深将一直为0,屏幕坐标转世界坐标其实是根据距离摄像机的平面确定的(z轴),所以需要先确定z轴后转世界坐标系

GetMouseWorldPosition = Camera.main.ScreenToWorldPoint(GetMousePosition);

利用射线检测物体转屏幕坐标

不会出现超出屏幕坐标系的情况

if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hit))
{GetObjectPosition = Camera.main.WorldToScreenPoint(hit.point);
}

获得带纵深的屏幕坐标系,xy值为根据屏幕大小决定,z为距离摄像机的位置与本身的世界坐标系z无关
在这里插入图片描述

UI坐标

Canvas的世界坐标z值是距离摄像机的距离,那么子物体的世界坐标z值也是与摄像机的距离
在这里插入图片描述

实现拖曳UI

屏幕坐标XY是根据屏幕宽高决定,Z是相对摄像机的距离,将屏幕坐标看成一个个屏幕即可
世界坐标是根据世界原点确定,与屏幕坐标的Z值参考不一样

using UnityEngine;
using UnityEngine.EventSystems;[RequireComponent(typeof(EventTrigger))]
public class DragUI : MonoBehaviour
{private EventTrigger m_eventTrigger;private RectTransform m_rectTransform;private Vector3 m_targetPosition;private Vector3 m_offsetPosition;void Start(){m_eventTrigger = GetComponent<EventTrigger>();m_rectTransform = GetComponent<RectTransform>();EventTrigger.Entry onDragEntry = new EventTrigger.Entry();onDragEntry.eventID = EventTriggerType.Drag;onDragEntry.callback.AddListener((data) => { OnDrag(); });EventTrigger.Entry enterDragEntry = new EventTrigger.Entry();enterDragEntry.eventID = EventTriggerType.BeginDrag;enterDragEntry.callback.AddListener((data) => { EnterDrag(); });m_eventTrigger.triggers.Add(onDragEntry);m_eventTrigger.triggers.Add(enterDragEntry);}private void EnterDrag(){m_offsetPosition = GetScreenMousePosition() - m_rectTransform.transform.position;}// 拖拽时移动UIprivate void OnDrag(){// 屏幕坐标转世界坐标m_targetPosition = GetScreenMousePosition();m_rectTransform.transform.position = m_targetPosition - m_offsetPosition;}// 获得鼠标世界坐标private Vector3 GetScreenMousePosition(){// 与摄像机的距离float distanceCamera = m_rectTransform.transform.position.z;// 鼠标位置(确定了平面的Z)Vector3 screenMousePos = Input.mousePosition + new Vector3(0f, 0f, distanceCamera);// 屏幕坐标转世界坐标Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(screenMousePos);Debug.Log(worldMousePos);return worldMousePos;}
}
http://www.yayakq.cn/news/591403/

相关文章:

  • 选择荣胜网络宁波网站建设陇西做网站的公司
  • 网站建设流程多少钱网站推广的技能
  • 推广网站怎么做模板网站开发和软件
  • 记事本做网站网站在百度搜索不到
  • 网站在线留言系统郑州小程序制作流程及费用
  • 网站章子怎么做做网站设计文字大小怎么设定
  • 网站优化公司 网络服务网站建设与运营市场开发方案
  • 万网网站建设步骤垫江网站建设哪家好
  • .net电子商城网站开发设计域名注册局联系方式
  • 费县建设局网站安徽省建设工程信息网企业入口在哪
  • 厦门网站营销建设执业资格注册中心官方网站
  • 企业门户网站的建设方法九一人才网找工作
  • 无锡网络公司可以制作网站关于地产设计网站
  • 网站建设的特征html5购物网站模板
  • 医药网站备案成都定制app开发公司
  • 北京网站推广服务建设一个班级网站的具体步骤
  • 网站免费制作网站建设问一问公司
  • 做u盘的老外网站山阳网站建设
  • 网站建设 美食站点可以不花钱做网站吗
  • 网站域名的后缀求几个夸克没封的a站2023
  • 北京网站备案代理湖南怀化市住房城乡建设局网站
  • 西安网站建设畅网石家庄手机网站制作
  • 购物网站多少钱专业建站源码
  • 哪种语言做网站最合适wordpress迁移容易
  • 网站开发上证k线龙岗网站建设费用明细
  • 广州网站优化推广公司公司办公网络设计方案
  • 创建一个网站的项目体现项目完成速度因素的能免费做网站
  • 东莞网站建设哪里好荆州建设网站
  • 墨刀做网站网页临沂百度seo
  • asp单页网站源码推广普通话调查问卷