1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 屏幕坐标转换世界坐标

屏幕坐标转换世界坐标

时间:2022-01-17 19:47:03

相关推荐

屏幕坐标转换世界坐标

屏幕坐标转世界坐标:网上有很多坐标转换的方法,都是直接用Camera.main.ScreenToWorldPoint(Input.mouseposition)直接转换,但这样得到的结果是不正确的,转换的结果为(0,0,0),因为Input.mouseposition是一个屏幕坐标,没有Z轴深度,而世界坐标是需要Z轴的,即我们需要知道参考对象到我们摄像机的垂直距离作为Z值,即需要知道幕布到投影仪的距离才可以将幕布上的一个点转换到世界上来。

/// <summary>/// 鼠标屏幕坐标转世界坐标/// </summary>/// <param name="mousePos"> 鼠标位置 </param>/// <param name="targetTransform"> 参考对象 </param>/// <returns></returns>public Vector3 MousPostionToWorld(Vector3 mousePos, Transform targetTransform){// 相机到目标的向量Vector3 dir = targetTransform.position - Camera.main.transform.position;// 计算在摄像机Z方向上的投影向量Vector3 normardir = Vector3.Project(dir, Camera.main.transform.forward);// 坐标转换,需要知道投影距离,normardir.magnitude是求出向量的长度return Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, normardir.magnitude));}

参考:/qq_40786931/article/details/79084344

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。