OnComponentBeginOverlap
isn’t triggered when player moves into the volume of the UBoxComponent
called TriggerVolume
.
Header:
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "PlatformTrigger.generated.h"
UCLASS()
class PUZZLEPLATFORMS_API APlatformTrigger : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
APlatformTrigger();
// Called when the game starts or when spawned
virtual void BeginPlay() override;
// Called every frame
virtual void Tick(float DeltaTime) override;
private:
UPROPERTY(VisibleAnywhere)
class UBoxComponent* TriggerVolume{};
UFUNCTION()
void OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
};
Source:
// Fill out your copyright notice in the Description page of Project Settings.
#include "PlatformTrigger.h"
#include "Components/BoxComponent.h"
// Sets default values
APlatformTrigger::APlatformTrigger()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
TriggerVolume = CreateDefaultSubobject<UBoxComponent>(FName("TriggerVolume"));
if (!ensure(TriggerVolume != nullptr)) return;
RootComponent = TriggerVolume;
TriggerVolume->OnComponentBeginOverlap.AddDynamic(this, &APlatformTrigger::OnOverlapBegin);
}
// Called when the game starts or when spawned
void APlatformTrigger::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void APlatformTrigger::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void APlatformTrigger::OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
UE_LOG(LogTemp, Warning, TEXT("Activated"));
}
In Blueprint class, on the TriggerVolume
component Generate Overlap Events
checkbox is checked:
Then the checkbox is also checked for the specific actor:
- But when the player enters the volume, the function isn’t called and there is no log:
After making all the edits in the code and in UE4 Editor I recompiled the project, and even restarted the whole UE4 Editor, because, apparently, it sometimes helps to fix problems like this one. It didn’t work in this case.