언리얼 - C++ 프로젝트

OpenWorldRpg (4) C++로 오버랩 이벤트 구현하기

earth-star 2025. 4. 23. 02:44

블루프린트로 많이 해보았던 오버랩이벤트를 C++로 구현해볼 것이다.

 

여기서 Delegates라는 디자인패턴을 사용할 것이다.

 

언리얼의 오버랩을 예시로 들자면 다음과 같다.

 

USceneComponent에 UShpereComponent를 Attach하면 그 사이에 UPrimitiveComponent라는 요소가 들어가게된다.

 

이 UPrimitiveComponent에는 여러 Delegates들이 내장되어있는데 그 중 하나가 OnComponentBeginOverlap이다.

 

OnComponentBeginOverlap 이벤트가 동작하면 Sphere의 콜백함수가 동작하는 것이다.

 

이때 콜백함수에 올바른 타입이 필요하다.(float, bool 등등)

위는 PrimitiveComponent.h파일의 OnComponentBeginOverlap과 OnComponentEndOverlap의 위치이다.

 

각 함수에 들어가있는 모든 타입이 포함되어있다.

 

이 함수를 가져올 때 이 모든 타입을 복사해서 가져와야한다.

Item.h에 OnSphereOverlap과 OnSphereEndOverlap 함수를 만들고 각각 PrimitiveComponent.h에 있던 타입들을 가져와 붙여넣는다.

Sphere를 루트 컴포넌트에 붙였다.

 

AddDynamic을 이용하여 언리얼의 오버랩 시작과 끝 이벤트를 함수와 바인드 하였다.

오버랩시 오버랩한 액터의 이름을 출력하고 오버랩 끝일때 End Overlap!이 출력되도록 하였다.

BP_Item을 뷰포트로 보면 위와 같이 스피어가 추가되어있다.

 

물체에 다가갈시 액터의 이름이 출력되고 나올시 End Overlap이 잘 출력되는 것을 볼 수 있다.