UE4:actor运动过程中的几种检测

来源:互联网 发布:w3cschool python 编辑:程序博客网 时间:2024/06/03 21:27

项目中用到了检测事件,于是学习了下,顺便这里纪录一下.

1.自定义运动过程中的检测box检测事件。


                               图1.1


                                图 1.2

盒体检测是根据设置的起始点和终点,发出的盒状的射线检测框。可以根据盒状射线检测到的结果做出一些响应事件.如图1.2

如本案例, 图1.2,红色方块体在运动的过程中发射方体射线检测,检测到场景中的某种actor,然后打印出改actor的name和collisiontype,并停止运动。


                                                                                                                                                         图 1.3

如图1.3,盒体检测的蓝图节点连接。最后的bool值是控制self的移动和停止的。



                                                                 图 1.4

UE4中提供了丰富的检测功能,目前我用到的有这么几种,射线检测 如图1.4,事件检测,boxcollision检测。射线检测中又分了十几二十中检测机制,单大体原理都相同。

以前在一个虚拟交互样板间的项目中使用过线性射线检测机制,通过鼠标射线拾取场景中的物体切换材质(UI控制)。这个样板间我随后可能会出一个视频专门去讲解一下,因为牵扯到挺多东西的。






2.动画运动过程中的Overlap检测事件:

此案例是导入的盒体动画,skeletalmesh在运动的过程中进行的overlap检测。首先需要设置一下skeletalmesh的碰撞属性

                                                                  图 2.1
如图 2.1  勾选GenerateOverlaoEvent属性,意思是打开overlap事件属性。另外需要设置碰撞预设值为Overlap碰撞预设。当然,根据自己的需求自定义碰撞预设,让skeletalmesh可以根据需求忽略不需要的actor。




                                                                                                                                               图 2.2
如图2.2,此蓝图较为简单,添加一个oncomponentbeginoverlap事件,按照需求打印出检测到的actor的name和collisiontype值。当overlap事件发生后,停止播放动画。







3.自定义运动过程中的Overlap检测事件:

由于不确定项目需求是动画运动还是自定义tick驱动的运动,所以,两种方式都做了overlap的检测。另外,包工头要求需要精确的碰撞检测,不能用盒体检测,最好用物体自身的碰撞去检测,所以,这里还得用Overlap事件。

 
                                                                                   图 3.1


这里使用的模型是不规则的,如果用盒体或者球体检测,不能做到精确检测。反之,overlap事件中,模型的任意部分只要发生了重叠事件,都能够触发响应。


                                                                                                                                                     图3.2

这里只大致写了制作的思路,很多细节没有写到。有什么不同的朋友可以联系我,大家一起交流下。QQ:251221274













原创粉丝点击