正确的计算鼠标的方法'位置(Unity 3d)

时间:2015-04-17 05:42:03

标签: vector unity3d

每当我开发使用鼠标输入的游戏时,我都会对计算鼠标位置感到困惑。特别是z位置。

我看到很多人使用的方式。

  1. 鼠标位置z =鼠标位置y。

  2. z =相机与物体之间的距离。

  3. z =差异b / w对象z和相机z。 (我正在使用。旋转相机和物体时不起作用。)

  4. z =某个任意值。 (许多人使用0和其他一些值)。

  5. 他人。

  6. 哪种方法正确?还有其他正确的方法吗?

    请告诉我。

3 个答案:

答案 0 :(得分:1)

与第二个基于鼠标的问题相同的答案也适用于此:Mouse based aiming Unity3d

TL; DR:使用来自摄像头的光线投影与动作所在的平面相交。

答案 1 :(得分:0)

  

Vector3 pz = Camera.main.ScreenToWorldPoint(Input.mousePosition);

如果我理解正确,pz.z应该是你所要求的。告诉我它是否有效

答案 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.