[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

  

相关文章
相关标签/搜索