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