【UE4】最简化碰撞检测
1、创建碰撞检测基本类
1.1 新建C++ 类
命名为BonusBoxArea
1.2 添加区域检测代码
在BonusBoxArea.h中
头文件
添加
#include "UdpProj_0816/UdpProj_0816Character.h"
public:
区域添加如下代码
// Actor Enter
virtual void NotifyActorBeginOverlap(AActor* OtherActor) override;
// Actor Exit
virtual void NotifyActorEndOverlap(AActor* OtherActor) override;
其中,NotifyActorBeginOverlap
类似Unity中的OnTriggerEnter
;NotifyActorEndOverlap
相当于Unity中的OnTriggerExit
在BonusBoxArea.cpp中,直接在底部
添加如下代码
void ABonusBoxArea::NotifyActorBeginOverlap(AActor* OtherActor)
{
}
void ABonusBoxArea::NotifyActorEndOverlap(AActor* OtherActor)
{
}
2、确定碰撞检测目标
类似于Unity,需要判断物体的Tags或者物体的Name来判断进入的Actor是不是我们想要的,因此,需要在cpp中丰富我们的代码:
void ABonusBoxArea::NotifyActorBeginOverlap(AActor* OtherActor)
{
auto hubActor = Cast<ACharacter>(OtherActor);
if (hubActor != nullptr)
{
UE_LOG(LogTemp,Warning, TEXT("Character Enter"));
}
}
void ABonusBoxArea::NotifyActorEndOverlap(AActor* OtherActor)
{
auto hubActor = Cast<ACharacter>(OtherActor);
if (hubActor != nullptr)
{
UE_LOG(LogTemp, Warning, TEXT("Character Exit"));
}
}
3、继承BonusBoxArea
3.1 打开UE4,在Content中新建BonusBoxArea类:
命名为 NetBox
在NetBox中添加BoxCollision
4、将NetBox拖入场景,查看结果
控制玩家移动至Box区域,可以看到结果:
版权声明:本文为weixin_46840974原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。