制作RPG游戏的时候,在玩家与NPC交互时,需要给NPC添加一个碰撞盒。在UE4中创建派生自Character的NPC类,在头文件中定义一个BoxComponent作为NPC的碰撞组件,至于其他的成员这里就不提了,然后添加BeginOverlap和EndOverlap方法(需要使用UPROPERTY()宏)。在Cpp的构造函数中实例化BoxComponent,设置一些参数(大小、绑定组件什么的),再给这个碰撞组件添加OnComponentBeginOverlap和OnComponentEndOverlap的绑定(AddDynamic),在BeginOverlap和EndOverlap中判断OtherActor以及Controller进行输出一个String。在UE4中基于这个类来创建蓝图类,设置骨架、动画。确保BoxComponent的Generate Overlap Event单选框选上。将这个蓝图直接拖动到场景中,点击Play,可以按~输入Show Collision命令来显示碰撞体。这样就实现了角色进入BoxComponent输出BeginOverlap打印的String,出去的时候输出EndOverlap打印的String。
注意,在这个过程中可能会出现以下几个问题:
1.在4.18版本的BeginOverlap和EndOverlap函数参数和之前版本(也不清楚是4.几)有出入,参数列表开头要加上class UPrimitiveComponent* OverlapComp。否则,就会报OnComponentBeginOverlap.AddDynamic 的编译错误【UE4】