블루프린트에선 콜리전 이벤트 조건을 생성할 때 OnComponentBeginOverlap Event에 노드만 쭉쭉 뽑아 연결하면 되는데
c++에선 해줄 것도 많고 왠지 모르게 잘 안된다. 왜인지는 아직 해결 중이지만 오늘 하루종일 붙잡고 있던 사안이기에 적을 수 밖에 없었다. c++은 나를 잘 화나게 한다. 소질있어.
1. 콜리전 컴포넌트 추가
먼저 콜리전 이벤트에 사용할 컴포넌트를 추가해준다.
//헤더파일
class UBoxComponent; //전방선언
클래스 내부
{
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components") // 리플렉션 시스템
UBoxComponent* 콜리전 이름; // 콜리전 컴포넌트 선언
}
========================
//cpp파일
#include "Components/BoxComponent.h"
클래스::생성자()
{
콜리전 이름 = CreateDefaultSubobject<UBoxComponent>(TEXT("콜리전 설명")); //컴포넌트 생성
콜리전 이름->SetupAttachment(RootComponent); // 루트에 소속
}
2. 이벤트 등록
BeginPlay에 이벤트를 등록해준다.
void 클래스::BeginPlay()
{
Super::BeginPlay();
콜리전 이름->OnComponentBeginOverlap.AddDynamic(This, &클래스::실행할 함수); // 오버랩 시작 시 실행할 함수
콜리전 이름->OnComponentEndOverlap.AddDynamic(This, &클래스::실행할 함수); //오버랩 종료 시 실행할 함수
}
#-AddDynamic
-AddDynamic이란 델리게이트(Delegate)시스템에서 특정 함수를 바인딩할 때 사용하는 매크로.
-언리얼 이벤트 시스템에서 특정 함수가 실행되도록 설정하는 역할.
-연결할 함수는 UFUNCTION()을 선언해줘야한다.
-UFUNCTION() 앞에 BlueprintCallable 또는 BlueprintNativeEvent 같은 특정 플래그가 필요.
-함수 시그니처가 이벤트 델리게이트와 일치해야한다.
-동적 델리게이트 전용이다.
--사용처
- 컴포넌트의 이벤트( Overlap, Hit 등)에 함수를 바인딩할 때
- 델리게이트 시스템에서 커스텀 이벤트를 사용할 때
3. OnComponentBeginOverlap연결 함수의 매개변수
//함수 매개변수 목록
void 클래스::함수명(
UPrimitiveComponent* OverlappedComponent,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex,
bool bFromSweep, // EndOverlap에선 제외
const FHitResult& SweepResult) // EndOverlap에선 제외
{
}
| 매개변수 | 설명 |
| OverlappedComponent | 충돌을 감지한 컴포넌트(현재 객체의 컴포넌트) |
| OtherActor | 충돌한 액터 |
| OtherComp | 충돌한 액터의 컴포넌트 |
| OtherBodyIndex | 충돌한 바디 인덱스(멀티 콜리전 지원) |
| bFromSweep | 스윕테스트로 감지되었는지 여부 |
| SweepResult | 충돌 정보(위치, 충돌 노멀 등) |
#-멀티 콜리전 : 한번에 여러 충돌이 발생하거나 범위에 들어온 여러 객체의 정보를 불러들이거나 할때 한번에 다량의 충돌을 배열로 가져오는 것. ( 다반사형 무기, 광범위형 무기, 적 감지 등)
열심히 찾아봐도 이정도가 기본 틀인데, 그리 복잡하지도 않은 구조에서 이것저것 만져봐도 잘 해결되지 않는다.
더 열심히 찾아봐야겠다.
'게임 개발 공부 > 언리얼엔진' 카테고리의 다른 글
| UE5 학습 - 애니메이션 리타겟팅 (1) | 2025.02.06 |
|---|---|
| UE5 - 모델링모드 (2) | 2025.02.04 |
| UE5 | C++ 개발 - Controller 설정 (2) | 2025.01.31 |
| UE5 | C++ 개발 - 움직이는 액터 제작 (3) | 2025.01.23 |
| UE5 | C++개발학습 - 리플렉션 시스템 (0) | 2025.01.21 |