[UE4]Grab抓取

1、關鍵函數:AttachToCompoent,將要抓取的物品附加到角色手上,讓物品跟隨手移動,開起來就像是抓取在手裏了。app

2、取消模擬物理。在開啓模擬物理的狀況下,AttachToCompoent是無論用的,被抓取的物品只會受物理重力控制,抓取不起來的。函數

3、建立函數FindGrabTarget,使用GetOverlappingActors(能夠設置值獲取某一個類別的物品,也能夠不設置獲取全部重疊的物品)得到跟手重疊物品。性能

  

 3、使用IsValid判斷抓取的物品是否有效,並將抓取到的物品保存到一個變量,供Drop(扔物品)函數使用。優化

  模擬物理不是Actor的屬性,而是Actor中Mesh組件模型(包含Static Mesh和SkeetalMesh)的屬性,使用Get Component By Class獲取actor中Mesh組件模型,並取消模擬物理(使用Set Simulate Physics方法,Get Component By Class須要先選擇Mesh Component纔有該方法)。blog

  AttachToCompoent的Rule選擇Keep World,抓取後保留被抓取的物品原來的樣子(包括位置、選擇角度、縮放)。  遊戲

5、沒有碰撞體的物品是沒法抓取起來的。若是物品有碰撞體,可是依然沒法抓取起來,則要檢查被抓取的物品是否沒有勾選Generate Overlap Events(產生碰撞事件),勾選上這個選項就能夠了。同時被抓取的物品的Mobility可移動性要設置爲Movable事件

   

 6、能夠看到方塊被移動之後,原來的影子還在。緣由是方塊原來是Mobility = Static,所以引擎給該方塊構造的是靜態光照(優化性能),改爲Movable之後要,要從新烘焙,遊戲運行中,再次抓取並移動這個方塊,就不會產生影子問題了。get

  

相關文章
相關標籤/搜索