好消息!好消息!上次更新还是UE4时代,转眼间UE5已经君临天下。正如老王预言的那样,UE5是UE4的大版本升级,所以这个[玩转UE4动画系统]可以直接无缝更名为[玩转UE5动画系统]啦!
前言在[玩转UE4动画系统>基础篇] 之 什么是射线检测一文中已经介绍了射线检测的重要性并简单介绍了Trace节点(函数)常用的返回值。本文将逐个解释一下HitResult结构体的各个分量的意义。
HitResult是否发生了碰撞
Initial Overlap是否发生了初始重叠,所谓初始重叠指的就是射线在初始位置,是否已经发生了碰撞
当Initial Overlap为true时,也就意味着Distance的值为零。
如果碰撞形状非Line,那么如下图所示
在ALS V4的CapsuleHasRoomCheck方法中,作者就借助这个值来判断一个空间是否有足够的位置容纳角色的胶囊体。
Time碰撞时间,值的范围是(0~1),当发生了初始重叠时 Time为0,当未发生碰撞时 Time为1(即无穷远)
Distance射线起点到碰撞点之间的距离。注意:当Distance为0时可能有两种情况,发生初始重叠或未发生碰撞,需要通过Initial Overlap来判断。
Location、Impact Point、Normal、Impact NormalLocation和Impact Point
前者是碰撞时射线形状的位置,后者是实际碰撞点的位置
Normal和Impact Normal
Impact Normal就是被碰撞表面的法线方向
很多时候Normal就等于Impact Normal,我实验了几种情况没有发现它们的区别,此处如有错误敬请指正!
Phys Mat被射线碰撞对象的物理材质
Hit Actor被射线碰撞的Actor
Hit Component被射线碰撞的Primitive Component
Hit Bone Name如果被射线碰撞对象是一个Skeletal Mesh,那么将会返回被碰撞的骨头名称
Hit Item被碰撞的Primitive索引
Element Index如果一个Primitive是由多个部分组成的,那么这里返回被碰撞元素的索引
Face Index面索引
Trace Start、Trace End射线的起点和终点