Unity 檢測物體是否在相機視野範圍內

2021-08-20 15:16:17 字數 1153 閱讀 3752

需求:

類似npc血條,當npc處於攝像機視野內,血條繪製,且一直保持在npc頭頂。

開始:網上查詢資料,然後編寫**:

public

recttransform rectbloodpos;

void

update ()

實現效果圖:

但是隨後發現,若攝像機背對物體則如下圖:

什麼鬼,居然憑空出現ui,後來研究改進:

1

bool

isrendering;

2float curttime=0f;

3float lasttime=0f;45

void

onwillrenderobject()69

10void

update ()

1120

else

21 rectbloodpos.gameobject.setactive (false

);22

23 lasttime =curttime;

2425 }

這種方法的原理是,當攝像機範圍內出現掛有該指令碼的物體,且該物體上存在render元件的,則觸發繪製ui。

雖然這個方法很好用,但是由於物體太多後,影響效能,故再次改進:

1

public

bool

isinview(vector3 worldpos)213

14void

update ()

1523

else

24 rectbloodpos.gameobject.setactive (false

);25 }

這個方法是用vector3.dot()的方法判斷攝像機與物體的朝向以及前後從而判定是否顯示ui。

以上完美實現npc血條跟隨。

如果小夥伴們有更好的方法,一定要記得分享啊!!!

unity 判斷物體是否在螢幕內

方法一 使用unity系統函式 onbecamevisible 和 onbecameinvisible 物體在螢幕內 void onbecamevisible 物體在螢幕外 void onbecameinvisible 注意 物體只要有一部分在螢幕內onbecamevisible都會執行,只有物體完...

Unity檢測滑鼠是否在螢幕裡

1.檢測滑鼠是否在螢幕裡,分倆種情況 視窗軟體 滑鼠位置的座標超出視窗後,取值大於或小於解析度,即 input.mouseposition.x screen.width,input.mouseposition.y screen.height,可以判斷出滑鼠是否在軟體螢幕裡。全屏軟體 滑鼠位置移出螢幕...

Unity判斷物體是否在視野範圍內

然後就考慮結合遮擋剔除,但是烘焙了多次,不太理想。找到了instantoc外掛程式,發現裡面用射線檢測實現,先說一下該方法的缺點,update隨機射線,消耗高,而且必須要有collider才能檢測。相機的檢測 namespace lastzero private void update 物體自我處理...