UE4復習4_射線檢測


假如游戲中有一個需要我們進行交互的物體,可以通過射線檢測來判斷角色與改物體是否滿足條件(比如面向它且在一定距離之內)

首先創建了一個雕像,並且添加了兩個粒子系統,smoke和fire,還有一個旋轉的text。

當我們靠近該雕像且正視它時,按鼠標左鍵會使得smoke,fire,text被激活。

雕像的藍圖:

 

  

 

 雕像的藍圖如上,游戲開始時smoke,fire,text都是不可見的。

寫了一個函數active all,如果傳入值是true,那么會將三者的值改為可見,且將控制text 是否旋轉的text rotate布爾值也修改為true。

 

然后就是射線檢測了,思路是首先需要在角色身上創建一個插槽作為射線的起始點,然后在將control rotation的作為視角方向。

這樣發出的射線起始點為插槽,終點為 control rotation的vector * 長度 +插槽起始點。步驟如下:

在角色的骨骼里找到head,並且創建一個插槽,命名為socket_head;(如圖,可以通過控制柄來自定義插槽的位置,不一定非在頭上)

 

 

在角色藍圖中右鍵trace,會發現許多射線檢測的函數,這里使用的是 line trace by channel;

通過上述確定了射線的起始點和終點,這里射線的長度為400;輸出的是布爾值是射線是否被阻擋,如果被阻擋,強制轉換阻擋射線的物體為statue,如果轉換成功,說明是雕像阻擋了射線,再調用它的active all函數將smoke,fire,text激活。

 

 

 剛進入游戲是這樣的:

 

 靠近並點擊鼠標左鍵后被激活:

 

 

注意因為法線選擇的是control rotation,所以我們必須將屏幕中心點對准該雕像才有用。

法線也可以選擇其他方向。比如下面這個,是以鼠標在場景中的三維坐標為起點,方向為該點到攝像機

 

 

 我們也可以把 draw debug type 打開,這樣就能看到射線的具體位置了。

 

 

再比如這樣些,使法線的方向一直為角色的forward方向,這樣即使我們旋轉control 也不會改變射線的發射方向

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM