Unity-Camera ScreenToWorldPoint返回奇数值

主相机的输出设置为渲染纹理,该纹理应用于材质,该材质应用于缩放至128x72的四边形。辅助摄像机设置为仅查看渲染到子四边形上的对象,该子四边形上具有带有渲染纹理的材质。

但是Camera.main.ScreenToWorldPoint(Input.mousePosition)返回的值甚至不接近GameObject。IE的GameObject实例化为(0, 0, 0),将鼠标悬停在上时显示的鼠标为(307, 174)。将Rotating Object移至屏幕的右边缘将仅返回x位置64(宽为128px的四边形的一半),因此我不确定300+来自何处。不知道四极/相机设置是否对此负责。

编辑:使用单个正交相机,除了使用渲染纹理外,所有属性都相同,而不是我现在得到的设置是准确的ScreenToWorldPoint输出。

http://img1.mukewang.com/60aa260600016fb703630153.jpg

http://img1.mukewang.com/60aa2610000147ef03290638.jpg

http://img4.mukewang.com/60aa261c0001d3a703470639.jpg

http://img3.mukewang.com/60aa26290001cd3e03480638.jpg

梵蒂冈之花
浏览 402回答 3
3回答

不负相思意

您可能未Camera.ScreenToWorldPoint正确调用该方法。特别是,应将传递给此方法的屏幕位置参数的z位置定义为相机的世界单位。请参阅Camera.ScreenToWorldPoint上的Unity文档。相反Camera.main.ScreenToWorldPoint(Input.mousePosition),我认为这是正确的调用方式Camera.ScreenToWorldPoint:var cameraPosition = Camera.main.transform.position;// assuming `transform` is the transform "Virtual Screen Quad"...float zWorldDistanceFromCamera = transform.position.z - cameraPosition.z;var screenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, zWorldDistanceFromCamera);var worldPoint = Camera.main.ScreenToWorldPoint(screenPoint);Debug.LogFormat("mousePosition: {0} | zWorldDistanceFromCamera: {1} | worldPoint: {2}",                Input.mousePosition,                zWorldDistanceFromCamera,                worldPoint.ToString("F3"));(如果这行不通,您是否可以更新您的问题?)
打开App,查看更多内容
随时随地看视频慕课网APP