我有一个相机俯视我的游戏世界。我想让用户点击对象。以下脚本附加到 MainCamera。
void Update () {
if (holdingSomething)
{
if (Input.GetMouseButtonUp(0))
{
holdingSomething = false;
}
}
else if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Vector3 mousePos = new Vector3(Input.mousePosition.x,Input.mousePosition.y,0);
Vector3 rayOrigin = new Vector3(Camera.main.ScreenToWorldPoint(mousePos).x,Camera.main.ScreenToWorldPoint(mousePos).y,Camera.main.transform.position.z);
Vector3 rayDirection = new Vector3(Camera.main.transform.rotation.x,Camera.main.transform.rotation.y,Camera.main.transform.rotation.z);
Debug.Log("Mouse button is down" + mousePos);
Debug.Log("rayOrigin " + rayOrigin);
Debug.Log("rayDirection " + rayDirection);
Ray ray = new Ray(rayOrigin,rayDirection);
if (Physics.Raycast(ray, out hit))
{
Debug.Log("We just touched " + hit.collider);
}
}
}
这条线Debug.Log("We just touched " + hit.collider);
永远不会被调用。我不认为我的光线构建正确。这是其他调试消息的输出。在每条消息中,它们的 rayOrigin 都是相同的,即使 mousePos 发生了变化。
Mouse button is down(418.7, 195.1, 0.0)
rayOrigin (0.0, 6.2, -7.3)
rayDirection (0.3, 0.0, 0.0)
Mouse button is down(417.7, 278.0, 0.0)
rayOrigin (0.0, 6.2, -7.3)
rayDirection (0.3, 0.0, 0.0)
那么我哪里错了?