【发布时间】:2015-02-24 15:43:01
【问题描述】:
您好,我正在 Unity 游戏引擎中制作一个小游戏,但现在我无法将鼠标的 y 位置转换为世界 y 位置。 有什么想法可以解决这个问题吗?(用 c# 编程)
【问题讨论】:
您好,我正在 Unity 游戏引擎中制作一个小游戏,但现在我无法将鼠标的 y 位置转换为世界 y 位置。 有什么想法可以解决这个问题吗?(用 c# 编程)
【问题讨论】:
请记住,鼠标位置是 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;
}
请注意,这种方法假设射线会击中某物。
【讨论】: