远程抓取

视频教程已同步发布至B站:https://www.bilibili.com/video/BV16z4y1Y7Pf

创建VR项目

image-20230414013627021

编写RemoteGrabActor

设置基本组件

创建一个父Actor,之后所有需要挂载的actor只需要继承父actor就可以实现远程抓取。

image-20230414013914816

创建静态网格体,并添加GrabComponent

image-20230414014031644

设置物理属性

设置静态网格体的碰撞属性,在子类蓝图中选择网格体模型后记得勾选模拟物理

image-20230414014342176

创建函数SetItemProperties和SetItemFinishProperties

这两个函数是为了根据响应事件设置物体的物理属性。

image-20230414014645933

image-20230414014713221

ps:此处的SecondGrab变量请参考视频详细讲解。

设置贝赛尔曲线

创建函数SetBezierControlPoint,这个函数的作用是根据目标所在位置和要到达位置之间计算出贝赛尔点。

image-20230414014842721

再创建一个宏CalculateBezier,用来根据时间时刻生成物体的位置用来生成物体的抛物轨迹

image-20230414014909748

设置边缘发光

设置边缘发光是为了使得物体具有被选中的效果。

创建函数SetCustomDepth

image-20230414015004136

还需要检测物体是否此时被选中来取消它的发光状态

image-20230414015809418

为了实现这一个效果还需要在map中创建PostProcessVolume并且设置处理材质。

image-20230414015356548

编写事件图表

完成RemoteGrabActor的基本函数操作后下面来编写事件图表将它们都应用起来

所需要的变量

image-20230414020305951

image-20230414020446184

编辑RemoteGrabVRPawn

创建VRPawn子蓝图,在MotionControllerRight下创建场景组件命名为AttractionPoint

image-20230415015006679

设置射线追踪,并创建RemoteGrab

创建LineTrace函数

image-20230415014214132

创建FingerTrace函数,并通过Tick事件调用,触发RemoteGrabActor发光函数。

image-20230415020619678

image-20230415014401487

修改Grip触发事件

序列创建三个引脚

第一步

image-20230415015251572

第二步

image-20230415015438553

第三步

image-20230415015511131