统一鼠标位置到世界位置,但只是Y pos

时间:2015-02-24 15:43:01

标签: unity3d position mouse

您好我正在Unity游戏引擎中制作一款小游戏,现在我无法完成它只是为了让鼠标的y位置转换为世界y位置。 有什么想法可以解决这个问题吗?(用c#编程)

1 个答案:

答案 0 :(得分:1)

请记住,鼠标位置是2D点,但您正在投影到3D世界。因此,鼠标的Y坐标取决于世界中位置的Z坐标。或者换句话说,高度将根据世界空间中的点的深度而不同。如果你想获得一定深度的位置,你可以这样做:

Vector3 mousePos = Input.mousePosition;
mousePos.z = <depth>;
float y = Camera.main.ScreenToWorldPoint(mousePos).y;

或者你可以将Ray投射到世界中并使用它所击中的第一个东西的位置作为样本的深度:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
    float y = hit.point.y;
}

请注意,这种方法假设Ray会遇到一些问题。