[UE4]Grab抓取


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

二、取消模擬物理。在開啟模擬物理的情況下,AttachToCompoent是不管用的,被抓取的物品只會受物理重力控制,抓取不起來的。

三、創建函數FindGrabTarget,使用GetOverlappingActors(可以設置值獲取某一個類別的物品,也可以不設置獲取所有重疊的物品)獲得跟手重疊物品。

  

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

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

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

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

   

 六、可以看到方塊被移動以后,原來的影子還在。原因是方塊原來是Mobility = Static,因此引擎給該方塊構造的是靜態光照(優化性能),改成Movable以后要,要重新烘焙,游戲運行中,再次抓取並移動這個方塊,就不會產生影子問題了。

  

 

 

  

  

  

  

  

  


免責聲明!

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



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