안선생의 개발 블로그

[UE5 C++] OnComponentBeginOverlap 본문

언리얼/언리얼 C++

[UE5 C++] OnComponentBeginOverlap

안선생 2023. 11. 16. 11:52

OnComponentBeginOverlap

컴포넌트 간의 겹칠때 호출되는 이벤트입니다. 캐릭터가 만약 특정 지점에 갈 시 레벨이 이동 되거나 할 때 쓰거나 캐릭터가 총에 맞을 때 데미지 구현 할 때 등등 정말 많이 쓰니 알아두도록 하자

 

사용방법

헤더파일 
UFUNCTION()
void OnComponentBeginOverlap(
    UPrimitiveComponent* OverlappedComponent,
    AActor* OtherActor,
    UPrimitiveComponent* OtherComp,
    int32 OtherBodyIndex,
    bool bFromSweep,
    const FHitResult& SweepResult
);

private:
{
	UPROPERTY(VisibleAnywhere)
	TObjectPtr<class USphereComponent> Sphere; //오버랩을 감지한 콜리전

};

OverlappedComponent: 이벤트를 발생시킨 컴포넌트(현재 객체의 컴포넌트).
OtherActor: 충돌한 다른 액터.
OtherComp: OtherActor에서의 충돌한 컴포넌트.
OtherBodyIndex: 충돌한 다른 액터의 본체 인덱스 (본체가 여러 개인 경우).
bFromSweep: 스위프트 충돌 여부 (충돌을 스위프트로 검출했는지 여부).
SweepResult: 충돌 정보를 제공하는 FHitResult 구조체.

 

UFUNCTION매크로를 사용해줘야한다. 동적으로 이벤트를 해야하기 때문인것같다. 

파라미터 값은 고정된다 델리게이트이기 때문

오버랩을 감지할 Sphere를 하나 만들어준다.

 

CPP
#include "TestActor.h"
#include "Components/SphereComponent.h"

ATestActor::ATestActor()
{
	PrimaryActorTick.bCanEverTick = false;

	Sphere = CreateDefaultSubobject<USphereComponent>("Sphere");
}

void ATestActor::BeginPlay()
{
	Super::BeginPlay();

	/**오버랩시 실행할시 호출 함수 */
	Sphere->OnComponentBeginOverlap.AddDynamic(this, &ATestActor::OnComponentBeginOverlap);
	
}

void ATestActor::OnComponentBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
	/** 오버랩시 실행할 이벤트 */
    UE_LOG(LogTemp, Error, TEXT("Overlap"));
}

 

 

Sphere를 바인딩 해줘야 한다. 그래야 오버랩시 호출되기 때문

바인딩 될 시 오버랩 되면 바인딩 된 함수가 실행됨

 

 

 

'언리얼 > 언리얼 C++' 카테고리의 다른 글

[UE5] 언리얼 델리게이트 바인딩 종류  (1) 2024.03.23
[UE5] TObjectPtr  (0) 2023.11.18
[UE5] 인터페이스  (0) 2023.11.09
[UE5] C++ 블루프린트 연결하기  (0) 2023.11.02
[UE5] 언리얼 라이브 코딩  (0) 2023.10.31