我是Unity3D的新手。我有一个由许多物体组成的场景:
制作房间的预制件(地板的网格平面,墙壁的4个网格平面)。每个都有一个网格对撞机
包含多个UI元素的画布
在预制房间内,我创建了一个桌子,包括一个圆柱体(用于桌面底座),一个用于桌面的立方体,四个立方体,围绕桌面边缘创建墙壁,使其具有唇形在桌面上是一个飞机(这是桌子"感觉"还有一个箱子对撞机和刚体)。这些都有碰撞器。这都是预制件。
在桌面上我有一些预制立方体(骰子)。它们有一个刚体和对撞机。
我遇到的问题是鼠标事件没有注册骰子(它们附有脚本)。在Update事件中,我有这段代码:
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Debug.Log("Name = " + hit.collider.name);
Debug.Log("Tag = " + hit.collider.tag);
Debug.Log("Hit Point = " + hit.point);
Debug.Log("Object position = " + hit.collider.gameObject.transform.position);
Debug.Log("--------------");
}
}
我可以看到,即使我点击骰子,其他物体也会挡住(即房间的墙壁,桌面,桌面等)。
那么,我该如何过来呢?除了UI元素之外,唯一需要具有鼠标事件的对象是骰子。有没有办法不为其他一切注册鼠标事件?哦,我在C#中写这个,这是一个3D项目。
感谢