3
我是Unity3D的新手。我有一個由多個對象組成的場景:Unity3D防止與鼠標事件的衝突
預製房間(地板網格平面,牆壁4網格平面)。每一個都有一個Mesh撞機
帆布與多個UI元素的
裏面我創建的表的預製室,由一個缸(對於工作臺底座)時,表頂部的立方體,四個立方體圍繞桌面邊緣創造牆壁,使其成爲一個脣,桌面上是一架飛機(這是桌子「感覺」,還有一個箱子對撞機和剛體)。這些都有碰撞機。這全部變成預製。
在桌面上我有一些預製立方體(骰子)。這些有一個剛體和對撞機。
我遇到的問題是鼠標事件不註冊骰子(他們有一個腳本附加)。在更新時,我有這樣的代碼:
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項目。
感謝
你可以截取什麼阻止什麼?這將有所幫助。 – Programmer
是的,但我應該補充一點,那就是「阻止」骰子的onclick事件的所有項目都是真正處於後臺的事情。骰子坐在所有東西前面 – jason
你確定你的'Raycast'正在按照預期投射嗎?你可能已經知道這個:https://docs.unity3d.com/ScriptReference/Debug.DrawRay.html - 對調試raycasts總是很方便。 – Zze