이제 이전에 만든 구체에서 나가면 이벤트가 발생하게 해볼 예정이다.
목차
- C++에서 EndOverlap이벤트 생성
1. C++에서 EndOverlap 이벤트 생성
비주얼 스튜디오로 돌아가 엔드 오버랩 이벤트를 만들어보자. 헤더파일에 바인딩할 함수를 만든다.
void OnSphereEndOverlap();
여기에 들어갈 매개변수는 무엇일까? 다시한번 Primitive Component.h 파일로 돌아가 찾아보자
파람이 4개가 필요하다는 것을 알 수 있다. 뒤에서 부터 4개를 복사해 가져오면 된다.
UFUNCTION()
void OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);
그러면 이렇게 함수는 준비가 되었다. 이제 이걸 바인드 해보자.
그전에 중요사항이 있다. UFUNCTION() 매크로를 반드시 써주어야 한다. 전의 포스트에 말한 것처럼
UFUNCTION() 매크로가 있어야 언리얼 리플렉션 시스템에 노출이 되고 델리게이트에 의해 바인딩 될 수 있다.
cpp파일로 돌아가 다음과 같이 작성한다.
void AItem::BeginPlay()
{
Super::BeginPlay();
SphereComponent->OnComponentBeginOverlap.AddDynamic(this, &AItem::OnSphereOverlap);
SphereComponent->OnComponentEndOverlap.AddDynamic(this, &AItem::OnSphereEndOverlap); // 이부분을 작성
}
이제 함수를 정의하자.
void AItem::OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
{
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(1, 5, FColor::Red, TEXT("Out!!"));
}
}
이제 컴파일을 하고 에디터로 돌아가 확인을 해본다.
아주 잘 나오는 걸 볼 수 있다.
사실 처음 컴파일을 했을때 아무런 오류가 나지 않았지만 글자가 나오지 않아 당황했었다. 다시 강의를 보고 UFUNCTION() 매크로가 필요하다는 것을 알았고 매크로의 중요성을 다시한번 깨달았다.
'게임프로그래밍 > 실습1' 카테고리의 다른 글
[언리얼 실습] 10. 캐릭터에 Socket 추가하기 (0) | 2024.10.12 |
---|---|
[언리얼 실습] 9. 무기 클래스 추가하기 - Quixel Bridge 이용 (1) | 2024.10.12 |
[언리얼 실습] 7. Overlab Event 생성 (1) | 2024.10.11 |
[언리얼 실습] 6. Blend Space 1D를 이용한 걷기와 달리기 애니메이션 구분 (0) | 2024.10.11 |
[언리얼 실습] 5. 점프 애니메이션 적용하기 (2) | 2024.10.10 |