1. 程式人生 > >NGUI在3D場景中點選穿透解決辦法

NGUI在3D場景中點選穿透解決辦法

參考資料:

今天終於碰到了 資料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;
    }