블루프린트로 많이 해보았던 오버랩이벤트를 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이 잘 출력되는 것을 볼 수 있다.
'언리얼 - C++ 프로젝트' 카테고리의 다른 글
OpenWorldRpg (6) 무기 장착 및 EnumState로 상태에 따른 애니메이션 구현 (1) | 2025.04.25 |
---|---|
OpenWorldRpg (5) 애니메이션 리타깃 및 무기 장착 (0) | 2025.04.24 |
OpenWorldRpg (3) 캐릭터 애니메이션 및 IK Bones 활용 (0) | 2025.04.22 |
OpenWorldRpg (2) 캐릭터 생성 및 이동구현 (0) | 2025.04.21 |
OpenWorldRpg (1) 랜드스케이프 및 폴리지 (0) | 2025.02.18 |