【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中的OnTriggerEnterNotifyActorEndOverlap相当于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版权协议,转载请附上原文出处链接和本声明。