一、碰撞通道
先复制一个相同的小球和一块地板来进行操作。
先将碰撞预设修改成custom。
碰撞类型有如下几种
(查询就是上一篇中sweep的内容,仅仅发生在程序代码中,不会实际作用在游戏里,而物理碰撞就是游戏中常见的碰撞,一般都是把查询和物理都开启)
可以看到碰撞配置表
忽略就是完全不管,重叠是可以识别到物体重叠但是并不会进行阻挡,阻挡是会阻挡住物体。
这个配置表就是和第二项物体类型配合的,比如我想要实现一个小球可以通过一个小球被阻挡,那么只需要将一个小球设为其中一个类型,另一个小球设置为不同的类型,将一个小球的类型进行重叠或者忽略就行了。
(比如我把小球2设置成vehicle
将墙壁对于vehicle设置为忽略。
就做到了一个小球能通过而另一个小球会被阻挡。
一个阻挡一个通过。
)
或者反过来,让小球忽略掉墙壁的类型
墙壁 是worldStatic类型。
小球忽略掉worldstatic类型的碰撞。
也能做到
二、击中信息
每一帧的帧函数中的第三个参数FHitResult类型就是存储击中信息的。
创建一个FHitResult类型的参数,接受击中信息,然后再使用UE_LOG来输出。
代码如下:
FHitResult HitResult;
if (bShouldMove)
{
AddActorLocalOffset(TickLocationOffset, true, &HitResult);
UE_LOG(LogTemp, Warning, TEXT("X: %f,Y: %f,Z: %f"), HitResult.Location.X, HitResult.Location.Y, HitResult.Location.Z);
}
编译完成后查看日志
一行0和一行(0,326.037364,0)
其中0的一行是忽略碰撞的小球的信息,因为没有碰撞所以碰撞信息是000,而另一个是小球碰撞的坐标。