我正在開發簡單的修復它的遊戲類。在這裏,如果我點擊對象,它會在背景層前面實例化新圖層。但問題是當我點擊頂層時,點擊也會影響背景圖層。如何避免它。我在頂層使用了基於圖層的碰撞和碰撞,但沒用。請任何人都給我任何想法...在此先感謝。如何忽略鼠標點擊背景圖層或對象?
2
A
回答
2
我推薦使用raycast。單擊時,從鼠標光標投射到場景中,並檢查對象的標記(或其他屬性,如果需要的話)。這樣,您不必在許多不同的對象上使用OnMouseOver()或OnMouseDown(),並將邏輯放在一個地方。
它也更靈活,例如,您可以指定光線投射的範圍以及忽略某些圖層。
2
3D還是2D?
檢查了這一點:OnMouseDown on box collider 2D not firing
我還要檢查特定的標籤創造不同的模式進行檢查,等等。
int mode=0;
在 '模式0' 將檢查在 '模式1' 爲#basicLayers碰撞, 將檢查#topLayers
贊(使用上述鏈路答案+建議):
void check3DObjectClicked()
{
if (Input.GetMouseButtonDown (0)) {
RaycastHit hitInfo = new RaycastHit();
if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hitInfo)) {
Debug.Log ("Object Hit is " + hitInfo.collider.gameObject.name);
switch(mode){
case 0:
if (hitInfo.collider.gameObject.CompareTag ("basicLayerObject1"){
mode=1;
//do stuff
}
break;
case 1:
if (hitInfo.collider.gameObject.CompareTag ("createdTopLayerObj1"){
mode=2;
//do stuff
}else if (hitInfo.collider.gameObject.CompareTag ("quitTopLayer"){
mode=0;
//do stuff
}
//ignoring basicLayers tagged objects on background.
break;
}
}
}
}
希望這有道理。
+0
謝謝老兄,它的好方法。 – Albertkaruna
0
在我得到答案之前,我通過使用動畫做到了這一點。如果我與頂層交互,那麼在頂層工作完成後,我從背景中移除背景層,然後我放置背景層。這是好還是壞?
相關問題
- 1. 窗體忽略一些鼠標點擊
- 2. PostMessage鼠標點擊背景窗口
- 3. 模擬鼠標點擊背景表格
- 4. 「忽略背景」
- 5. 如何忽略Windows中的鼠標點擊? (C++)
- 6. 圖像分層,點擊圖標不碰背景
- 7. 產生對象的直方圖而忽略了背景
- 8. 如何在點擊對象後禁用鼠標點擊?
- 9. 如何讓對象被忽略並讓鼠標通過?
- 10. 如果點擊標記,則忽略地圖點擊
- 11. 忽略鼠標事件可點擊區域上的標籤
- 12. 如何使對象/圖層忽略剪裁平面附近?
- 13. QMainWindow忽略點擊,將它們傳遞到背景窗口
- 14. Greenfoot - 鼠標點擊和對象刪除
- 15. pygame的對象只在鼠標點擊
- 16. Matlab - 忽略圖像的背景
- 17. 多個CSS背景,忽略圖像的顏色,忽略
- 18. 忽略CSS背景顏色
- 19. Chrome忽略背景位置
- 20. 發送由GetAsyncKeyState()忽略的虛擬鼠標點擊?
- 21. 檢測鼠標點擊spark.components.List項目,卻忽略箭頭鍵
- 22. pygtk只讀gtk.TextView(讓它忽略鼠標點擊)
- 23. 什麼會導致PostMessage發送的鼠標點擊被忽略?
- 24. 繪圖點鼠標點擊
- 25. 如何忽略鼠標事件
- 26. 背景圖片點擊
- 27. jquery - 背景圖像點擊
- 28. JLayeredPane,背景圖像+「圖標」圖層
- 29. 如何顯示圖像時的背景按鈕scelected或點擊
- 30. 忽略地圖對象Nodejs
您可以在物件上添加標籤,並且您可以在點擊時檢查其標籤? –
@ Sir.WaLeK是的,但它更復雜,因爲我們需要檢查每次點擊。 – Albertkaruna