낙사하는 것을 구현하기 위해 맵 아래에 오버랩되었을 경우 낙사하는 함수를 호출하는 방식을 생각함
박스컴포넌트를 생성후
BoxComponent->SetCollisionProfileName(TEXT("OverlapAllDynamic"));
다이내믹 오브젝트들과 겹치는 Overlap를 활성화
BoxComponent->OnComponentBeginOverlap.AddDynamic(this, &ADropCheckBox::OnOverlapBegin);
BoxComponent에서 다른 오브젝트와 오버랩이 발생했을 때 OnOverlapBegin() 함수를 실행
OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
| OverlappedComponent | 충돌을 감지한 컴포넌트 (BoxComponent) |
| OtherActor | 박스에 들어온 오브젝트 |
| OtherComp | 충돌한 오브젝트의 콜리전 컴포넌트 |
| OtherBodyIndex | 충돌한 바디의 인덱스 (보통 0) |
| bFromSweep | 이동 중 충돌인지 여부 (true / false) |
| SweepResult | 충돌 위치, 방향 등의 정보 |
OtherActor을 이용해서 박스에 오버랩된 액터가 플레이어일 경우
플레이어의 OnDropDeath() 함수 실행
+ 클리어 타이머
클리어 타이머를 실행하여 타이머핸들러를 종료했음에도 또 다시 클리어 타이머를 실행했을 경우 문제 없음
클리어 타이머 안에서 실행 중인지를 확인한다고 함
'Unreal' 카테고리의 다른 글
| 사운드 적용 (0) | 2025.03.05 |
|---|---|
| 위젯 블루프린트(GameOver) (0) | 2025.02.28 |
| 데칼 감지(레이캐스트) (0) | 2025.02.25 |
| 타이머핸들러 & 부착 규칙 (0) | 2025.02.21 |
| Line Trace(Raycast) (0) | 2025.02.19 |