오늘 배운 내용
핵심 포인트:
세부 내용:
충돌 영역(콜리전 볼륨)
SphereComponent나 BoxComponent를 사용해 아이템 주변에 영역을 설정해두면, 플레이어가 들어오면 자동으로 이벤트 발생!Collision->SetCollisionProfileName(TEXT("OverlapAllDynamic")); 이렇게 하면 오버랩만 감지해서 깔끔하게 처리 가능.이벤트 바인딩
Collision->OnComponentBeginOverlap.AddDynamic(this, &ABaseItem::OnItemOverlap);OnItemOverlap 함수가 호출되고, 그 안에서 플레이어 태그("Player")를 확인해서 아이템 획득 로직 실행!기본 아이템 클래스(ABaseItem) :
구성 요소 :
핵심 함수 :
OnItemOverlap와 OnItemEndOverlap : 오버랩 시작/종료 시 호출되는 함수.ActivateItem : 실제 아이템 획득(또는 사용) 로직을 처리.인터페이스 구현 :
코인 아이템 :
ActivateItem에 구현.힐링 아이템 :
지뢰 아이템 :
ExplosionCollision 영역 내의 플레이어에게 데미지를 줌.DestroyItem() 호출로 아이템 제거.Alt + C로 콜리전 영역 시각적으로 확인해서 설정 이상 없나 체크.
결론 & 느낀 점
오늘 배운 걸 보니까, 언리얼의 충돌 이벤트 시스템은 직관적이면서도 강력함.
플레이어가 그냥 지나가기만 해도 아이템이 획득되도록 구현하는 건, 게임 디자인 측면에서 확실히 편리한 것 같음.
그리고 디버깅할 땐 충돌 프리셋, 콜리전 채널 등을 꼼꼼히 확인해야 한다는 점! 실수하면 오버랩 이벤트가 아예 안 뜰 수도 있음.