坐标系 unity 鼠标 位置

来源:互联网 发布:gotv源码是什么 编辑:程序博客网 时间:2024/04/29 03:15

鼠标拖拽功能

transform.position   获取世界坐标  ,物体在世界坐标,无论怎样的UI,怎样的层级关系,代码里输出Debug.log(go.transform.position),输出的总是相对于场景中心(0,0)的距离,也是获取世界坐标的方法。transform.position都是以场景中心(0,0)的位置开始计算,单位长度也都是一样的
鼠标:获取的是2维坐标 ,鼠标位置Input.mousePosition获取的是屏幕坐标。
屏幕坐标:屏幕空间以像素定义,屏幕左下为(0,0),右上是(pixelWidth,pixelHeight),Z的位置是以世界单位衡量的到相机的距离。
或者说:以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。
逻辑:
首先鼠标是2维的,第一步:把鼠标转成3维的屏幕坐标,z轴就是物体屏幕坐标的z轴,保证2者在同一个平面
  // 获取目标对象当前的世界坐标系位置,并将其转换为屏幕坐标系的点Vector3 Pos = Camera.main.WorldToScreenPoint(transform.position);        // 设置鼠标的屏幕坐标向量,用上面获得的Pos的z轴数据作为鼠标的z轴数据,使鼠标坐标与目标对象坐标处于同一层面上Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Pos.z)
第二步  直接使用  transform.position 赋值,注意这个是世界坐标,所以先要把鼠标的屏幕坐标转成世界坐标
transform.position = Camera.main.ScreenToWorldPoint(mousePos)
yield return new  WaitForFixedUpdate();  //  使用协程每一帧刷新一次
总结:把鼠标的世界位置赋值给物体-------鼠标是平面-----转成屏幕坐标-------z轴需要是物体的屏幕坐标-------把物体转成屏幕坐标
-------------鼠标的世界坐标



0 0
原创粉丝点击