안선생의 개발 블로그
[UE5 C++] OnComponentBeginOverlap 본문
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 |