博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Unity3D】获取鼠标在三维空间(世界坐标系)的位置
阅读量:4511 次
发布时间:2019-06-08

本文共 880 字,大约阅读时间需要 2 分钟。

路过的大神,如有发现不足,还望批评指正,只为学习和知识分享! 前言:   transform.position: 获取的是世界坐标(以场景中心(0,0,0)的位置开始计算,单位长度也都是一样的)   物体在世界坐标,无论怎样的UI,怎样的层级关系,代码里输出Debug.log(go.transform.position),输出的总是相对于场景中心(0,0)的距离,   也是获取世界坐标的方法。   鼠标:获取的是2维坐标 ,鼠标位置Input.mousePosition获取的是屏幕坐标。   屏幕坐标:屏幕空间以像素定义,屏幕左下为(0,0),右上是(pixelWidth,pixelHeight),Z的位置是以世界单位衡量的到相机的距离。   或者说:以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。
逻辑分析:   首先,确定(获取)世界坐标系,将其转化为屏幕坐标系;(需要z轴数据)   其次,把鼠标位置转成三维的屏幕坐标,将拿到的z轴数据赋给鼠标坐标的z轴,就是物体屏幕坐标的z轴,使鼠标坐标与目标对象坐标处于同一层面上;   最后,将新的鼠标三维屏幕坐标转化为世界坐标系下的鼠标坐标。   搞定。 代码如下:   Vector3 screenPos = Camera.main.WorldToScreenPoint(transform.position);   Vector3 mousePosOnScreen = Input.mousePosition;   mousePosOnScreen.z = screenPos.z;   Vector3 mousePosInWorld = Camera.main.ScreenToWorldPoint(mousePosOnScreen); 另:屏幕坐标系下鼠标准确位置:

转载于:https://www.cnblogs.com/yanghui0702/p/yanghui_20180628.html

你可能感兴趣的文章
JVMGC机制
查看>>
IAR for AVR 报array is too large错误 【已解决】
查看>>
老子《道德经》第六十二章
查看>>
Junit问题01 利用 @Autowired 注入失效问题
查看>>
连通块
查看>>
servlet.txt笔记
查看>>
jquery设置select选中
查看>>
今天说一下DML触发器的顺序
查看>>
Memcached学习(一)--网络模型
查看>>
FragmentTransaction add 和 replace 区别 转
查看>>
jQuery 效果方法
查看>>
STM32物联网通信WIFI
查看>>
java反射案例详解
查看>>
MAGENTO 与 reindexer
查看>>
数字,字符串,列表及其内置方法
查看>>
iOS遍历数组的同时删除元素
查看>>
小强的HTML5移动开发之路(16)——神奇的拖放功能
查看>>
zookeeper FastLeaderElection
查看>>
进度条
查看>>
用户画像
查看>>