每当我开发使用鼠标输入的游戏时,我都会对计算鼠标位置感到困惑。特别是z位置。
我看到很多人使用的方式。
鼠标位置z =鼠标位置y。
z =相机与物体之间的距离。
z =差异b / w对象z和相机z。 (我正在使用。旋转相机和物体时不起作用。)
z =某个任意值。 (许多人使用0和其他一些值)。
他人。
哪种方法正确?还有其他正确的方法吗?
请告诉我。
答案 0 :(得分:1)
与第二个基于鼠标的问题相同的答案也适用于此:Mouse based aiming Unity3d
TL; DR:使用来自摄像头的光线投影与动作所在的平面相交。
答案 1 :(得分:0)
如果我理解正确,pz.z应该是你所要求的。告诉我它是否有效Vector3 pz = Camera.main.ScreenToWorldPoint(Input.mousePosition);
答案 2 :(得分:0)
鼠标位置理论上是游戏世界本身的外部。因此,鼠标位置仅与您与游戏进行交互的屏幕空间的X和Y坐标(IE宽度:游戏高度)有关。
你所问的似乎更像是“我如何在游戏世界中模拟鼠标位置?”
如Mario所述,Camera.main.ScreenToWorldPoint(Input.mousePosition)会将您的鼠标位置转换为世界坐标。但是,这假定您的主摄像头是您要转换的位置。实际上,您希望在Camera上调用ScreenToWorldPoint方法,该方法呈现您想要与之交互的任何空间。例如,你可能将你的主游戏世界放在(0,0,0),但你可能会使用一个单独的相机渲染你的GUI,渲染对象为(-5000,0,0)。
要回答您的问题,要为鼠标z位置建模,它应该与您的相机的z值相同。然后,您可以对该值执行计算以满足您的特定需求。
IE:
1)mouse.position.z = mouse.position.y - 这些完全不同。现在你只是使用任意值 2)相机和物体之间的距离 - 这是从原始物体.position.z和原始mouse.position.z进行的计算。不是你的实际z值。 3)见2。 4)见1.