상호작용 오브젝트 (Interactable Object) 상속 구조 변경 작업
상호작용 가능 오브젝트를 개발 편의상 3 가지 분류로 구분하도록 상속 구조 변경, 불필요한 코드 간소화 작업
토글 작동형 오브젝트 (AToggleableObjectBase 파생)
소유 가능 오브젝트 (AOwnableObject 파생)
키다운 작동형 오브젝트 (AKeyDownableObjectBase 파생)
* 빨간색 표시 클래스 = 추후 구현 예정
상호작용 컴포넌트(UInteractionComponent)
플레이어 클래스에 부착하여 상호작용 기능을 관리할 목적의 컴포넌트를 구현하고, 키 입력에 대한 액션 바인딩 (플레이어 컨트롤러) 및 입력에 따른 컴포넌트 작동을 위한 코드를 플레이어, 플레이어 컨트롤러 클래스에 코드를 추가하였음
UInteractionComponent의 상호작용 메커니즘
- 컴포넌트 틱에서 trace를 사용해 플레이어 컨트롤러 전방 방향의 USceneComponent를 항상 검사
- 검사된 USceneComponent의 parent actor를 찾아 IInteraction 인터페이스를 상속받는지 검사
- IInteraction 인터페이스를 가지면 오브젝트를 Target에 저장하고 그렇지 않다면 nullptr를 저장
- 키 입력이 주어졌을 때 Target이 유효한 경우, Target의 Interact 메서드를 호출 (인터페이스 콜)
AInteractableObjectBase 파생 클래스의 상호작용 메커니즘
- Interact 메서드 호출 시, CanInteract() 메서드를 통해 다음과 같이 상호작용 가능 여부 판단
- 기존 상호작용 중인 Instigator가 존재하는지 판단 (중복 상호작용 방지 목적)
- 전달된 Instigator가 해당 오브젝트로부터 InteractionLimit 내에 존재하는지 판단
- 상호작용이 가능하면 전달된 Instigator를 상호작용이 완료될 때까지 저장
- 상호작용이 완료되면 Disinteract()를 통해 Instigator를 nullptr로 초기화한 뒤 상호작용 종료
- 파생 클래스에서는 목적에 맞게 BlueprintNativeEvent Interact의 C++ 버전을 재정의하여 구현
토글형 문 클래스 마무리 작업 및 테스트
상호작용 키 입력 및 그에 따른 컴포넌트, 오브젝트의 구현 기능이 실제로 잘 작동하는지 테스트
'포트폴리오 > Project K (팀 프로젝트, UE5)' 카테고리의 다른 글
[개발자 노트] 상호작용 오브젝트 클래스 설계, 토글형 문 오브젝트 클래스 구현 (~4월 3주차) (0) | 2024.04.23 |
---|
댓글