在.h文件中定义一个USphereComponent组件 ,NotifyActorBeginOverlap是用于重载
class USphereComponent* CollisionComponent; virtual void NotifyActorBeginOverlap(AActor* OtherActor) override;
常用编写套路:
CreateDefaultSubobject<>()
InitSphereRadius:初始范围
SetCollisionEnabled:设置碰撞启用类型
SetCollisionResponseToAllChannels:设置所有通道的碰撞响应类型
SetRootComponent:设置根组件
#include "Components/SphereComponent.h" ASTUBasePickup::ASTUBasePickup() { PrimaryActorTick.bCanEverTick = true; CollisionComponent = CreateDefaultSubobject<USphereComponent>("CollisionComponent"); CollisionComponent->InitSphereRadius(50.0f); CollisionComponent->SetCollisionEnabled(ECollisionEnabled::QueryOnly); CollisionComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap); SetRootComponent(CollisionComponent); } void ASTUBasePickup::NotifyActorBeginOverlap(AActor* OtherActor) { Super::NotifyActorBeginOverlap(OtherActor); Destroy(); }
对应在蓝图的函数