NGUI在3D場景中點選穿透解決辦法
阿新 • • 發佈:2019-01-22
參考資料:
今天終於碰到了 資料1 裡所說的點透問題(剛開始開到的時候沒明白什麼意思),重新再看了一下,又瞭解了一下相關知識(UICamera),今天又學到東西了。
基本知識上面參考資料裡的都一樣,只是根據我的實際問題總結匯總了一下。
問題:
1。當點選UIButton時,滑鼠會透過button點到地面,人物會移動;
2。點選UIbutton彈出揹包彈窗,點選彈窗邊緣,人物也會移動。
解決辦法:
1.給所有NGUI 物體物件都新增BoxCollider,並勾選 isTrigger,這樣才能觸發碰撞;
2.新增一個全域性類 在Update()裡 時時 檢測碰撞,程式碼如下:
void Update() { if(HitTestUI()) { //如果滑鼠碰到了NGUI物件,則人物不能移動 } } private bool HitTestUI() { /********以下兩種判讀都可以*******/ //如果在主Camer上也掛一個UICamera,這兩種判讀會一直返回真(為什麼呢???) //如果有碰到NGUI物件,返回真 if(UICamera.hoveredObject != null) { return true; } print("UICamera.Raycast___" + UICamera.Raycast(Input.mousePosition)); //如果從UICamer到當前滑鼠位置的射線碰到了NGUI物件,返回真 //if(UICamera.Raycast(Input.mousePosition)) { return true; } return false; }