📜  ue4 endoverlap c++ (1)

📅  最后修改于: 2023-12-03 15:05:42.253000             🧑  作者: Mango

UE4中的EndOverlap和C++编程介绍

在UE4中,Overlap Event是一个重要的事件,当物体重叠时便会产生该事件。而EndOverlap便是当物体结束重叠时触发的事件。接下来我们将介绍如何在UE4中使用EndOverlap,并给出相应的C++代码示例。

EndOverlap的用法

在UE4中,EndOverlap事件可以用于任何Overlap Event被触发的Actor。当Actor离开了它所重叠的物体时,便会触发EndOverlap。常见的应用场景有当Actor碰撞到物体时,比如子弹射出后离开了击中的物体时,就会触发EndOverlap事件。

C++代码示例

在代码中,EndOverlap是一个虚函数,它在Actor.h文件中声明,需要在.cpp中实现。以下是一个示例:

// 在Actor.h中声明
UFUNCTION()
virtual void OnOverlapEnd(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);

// 在.cpp中实现
void AMyActor::OnOverlapEnd(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
{
    Super::OnOverlapEnd(OverlappedComp, OtherActor, OtherComp, OtherBodyIndex);
    // 结束了Overlap时会进行的操作
}

EndOverlap函数中的参数含义,分别为:

  • OverlappedComp:正在触发EndOverlap事件的碰撞体;
  • OtherActor:碰撞到OverlappedComp的其他Actor;
  • OtherComp:碰撞到OverlappedComp的其他物体;
  • OtherBodyIndex:被碰撞物体在碰撞体上的几何体索引。

需要注意的是,如果我们在Actor.h中定义了另一个inline方法OnOverlapEnd_Implementation,那么UE4会认为EndOverlap是一个接口实现,这时候需要在.cpp中定义OnOverlapEnd_Implementation方法,并实现其中的EndOverlap代码。

结语

以上便是关于UE4中EndOverlap以及相应的C++实现方法的介绍。在使用EndOverlap的时候,需要注意碰撞体和碰撞物体都必须开启Overlap检测,才能触发EndOverlap事件。