TIL - 20 (언리얼에서의 ontriggerenter함수, 클래스 찾기)

jh Seo·2024년 9월 25일

클래스 찾기

맵에 로드된 적 없는 클래스

클래스를 찾아올 때 맵에 로드된 적 없는 클래스를 찾으려면 아래 함수를 사용해서 찾으면 된다.

ConstructorHelpers::FClassFinder

주로 생성자에서 사용된다.

예시)

static ConstructorHelpers::FClassFinder<APawn> 
		ClassFinder(TEXT("/Game/Blueprints/Pawns/BP_MyPawn"));

맵에 로드된 클래스

맵에 이미 로드된 클래스를 찾아오려면 아래 함수를 사용하면 된다.

FindObject

예시)

UClass* CoinClass = FindObject<UClass>(nullptr, 
			TEXT("/Script/Engine.Blueprint'/Game/Blueprint/CoinMap/BP_Coin.BP_Coin_C'"));

언리얼에서 충돌처리 (유니티의 ontriggerenter)

유니티에선 각 오브젝트마다 ontriggerenter함수를 이용해 trigger처리를 해줬다.
언리얼에서도 찾아보니 비슷한 역할을 하는 함수가 있다.

OnComponentBeginOverlap

델리게이트 함수이고, 객체의 OnComonentBeginOverlap델리게이트에 AddDynamic을 통해 함수를 바인딩 해주는 형식이다.

아래와 같은 OnTrigger함수를


void ABaseTriggerBox::OnTrigger(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
	if (!SpawnedActor) return;
	ITriggerInterface::Execute_OnTrigger(SpawnedActor, OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex, bFromSweep, SweepResult);
}

아래 코드처럼 OnComponentBeginOverlap에 AddDynamic을 이용해 바인딩해준다.

UShapeComponent* ShapeComponent = GetCollisionComponent();
ShapeComponent->OnComponentBeginOverlap.AddDynamic(this,&ThisClass::OnTrigger);
profile
코딩 창고!

0개의 댓글