Hello i am trying to do overlap on actor but didnt work
include “WeaponPickup.h”
include “Components/StaticMeshComponent.h”
include “MyFPSCharacter.h”
include “Kismet/GameplayStatics.h”
// Sets default values
AWeaponPickup::AWeaponPickup()
{
PrimaryActorTick.bCanEverTick = false;
// Create mesh and set as root
Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
RootComponent = Mesh;
// Collision setup
Mesh->SetCollisionProfileName(TEXT("OverlapAllDynamic"));
Mesh->SetGenerateOverlapEvents(true);
// Bind component overlap events
Mesh->OnComponentBeginOverlap.AddDynamic(this, &AWeaponPickup::OnOverlap);
Mesh->OnComponentEndOverlap.AddDynamic(this, &AWeaponPickup::OnEndOverlap);
}
void AWeaponPickup::BeginPlay()
{
Super::BeginPlay();
}
void AWeaponPickup::OnOverlap(
UPrimitiveComponent* OverlappedComponent,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex,
bool bFromSweep,
const FHitResult& SweepResult)
{
if (AMyFPSCharacter* Player = Cast(OtherActor))
{
Player->FocusedPickup = this;
GEngine->AddOnScreenDebugMessage(-1, 2.f, FColor::Yellow, TEXT(“Overlap detected! Press F to pick up weapon”));
}
}
void AWeaponPickup::OnEndOverlap(
UPrimitiveComponent* OverlappedComponent,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex
)
{
if (AMyFPSCharacter* Player = Cast(OtherActor))
{
if (Player->FocusedPickup == this)
{
Player->FocusedPickup = nullptr;
GEngine->AddOnScreenDebugMessage(-1, 1.5f, FColor::Red, TEXT(“Left pickup area”));
}
}
}