언리얼 상호작용 시스템

민트맛치킨·2026년 1월 15일

Unreal

목록 보기
25/26

상호작용 Interaction

설계

  • IAO_Interface_Interactable

    • CanInteraction() - 현재 상호작용 가능 여부
    • GetInteractionInfo() - UI 표시 정보 제공
    • GetMeshComponents() - 하이라이트 대상 메시
  • FAO_InteractionInfo 구조체

    • Title, Content : UI 텍스트
    • Duration : 0.0 = 즉시, 2.0 = 2초 홀딩
    • AbilityToGrant : 실행할 Ability 클래스
    • ActiveMontage : 재생할 애니메이션
    • DeactivateMontage : Toggle 모드인 경우 해제할 애니메이션
    • ActiveHoldMontage : 홀드 중일 때 재생할 애니메이션
    • VFX, SFX : 이펙트 정보
  • AAO_BaseInteractable : 상속으로 아이템이나 퍼즐 액터와 상호작용 가능

  • UAO_InteractableComponent : 컴포넌트 방식으로 캐릭터에도 상호작용 가능

  • 3단계 Ability 분리
    GA_Interact_Trace (LocalOnly)

    • 클라이언트에서만 실행
    • 0.1초마다 Trace 수행
    • UI 업데이트, 하이라이트 처리

    GA_Interact_Execute (ServerInitiated)

    • 서버에서 시작, 클라이언트로 복제
    • 상호작용 검증 (CanInteraction 사용)
    • Duration 체크 및 홀드 시스템 관리
    • 애니메이션, VFX, SFX 동기화

    GA_Interact_Base (ServerOnly)

    • 상호작용 최종 로직 실행
    • 퍼즐 체커 연동
    • 상태 변경

지속적인 객체 감지

  • 0.1초마다 자동 Trace : 플레이어 시야 내 상호작용 가능 객체 탐색
  • 실시간 하이라이트 : CustomDepth를 활용한 외곽선 렌더링
  • 동적 UI 업데이트 : 감지된 객체의 정보를 즉시 화면에 표시
  • 클라이언트 전용 처리 : 서버 부하 최소화 (LocalOnly Ability)

상호작용 대상 검증

  • CanInteraction 체크 : 현재 상호작용 가능 여부 확인 (플레이어가 조사 중일 때는 다른 상호작용 차단)

  • GetInfo 호출 : UI 표시에 필요한 모든 정보 수집

    • 액터 이름
    • 간략한 설명
    • 필요한 애니메이션
    • VFX, SFX 정보
    • 실행할 어빌리티 정보
  • Collision 기반 필터링 : Interaction 전용 채널이 Block인 경우만 감지

조사모드 Inspection

  • 특정 퍼즐을 조사하여 카메라 전환, 다양한 입력으로 조작이 가능한 시스템

설계

  • Interface 기반 확장 : IAO_Interface_InspectionCameraProvider만 구현

  • InspectionComponent : 컴포넌트 추가 시 모든 조사 퍼즐 사용 가능

  • 카메라 설정 : FAO_InspectionCameraSettings로 모든 카메라 동작 정의

  • Lock 시스템

    • 동시 접근 방지 - bIsLocked 플래그로 선점 제어
    • 다중 플레이어 체크 - IsLockedByOtherPlayer() 검증
    • 자동 해제 - Inspection 종료 시 Lock 해제
    • CanInteraction - 다른 사람이 조사 중이면 상호작용 불가
  • 취소 조건 처리

    • CancelInspectionTags 등록 - 죽음, 스턴, 강제 이동 등
    • 태그 감지 시 자동 종료 - RegisterGameplayTagEvent 활용
    • 기존 설정 복원 - 캐릭터, 카메라, 입력 모드 완전 복구
    • Ability 정리 - GrantedClickAbilityHandle 제거

카메라 시스템

  • 클로즈업 모드 : 단일 액터 조작
    • RelativeToActor 기준 배치
    • 자신의 캐릭터 숨김 처리
    • 예시 : 비밀번호 패널, 회전 퍼즐, 캐논 조작
  • 오버뷰 모드 : 넓은 시야 확인
    • WorldAbsolute 또는 RelativeToActor로 카메라 위치 지정
    • WASD로 카메라 평면 이동 가능
    • MovementBoundsExtent로 범위 제한
    • 예시 : 핀볼, 격자 퍼즐

입력 시스템

  • WASD 입력
    • 오버뷰 : 카메라 평면 이동
    • 클로즈업 : 캐논 Yaw/Pitch 회전
  • 마우스 클릭
    • 0.1초마다 Hover Trace 수행
    • 상호작용 가능한 액터인 경우 마우스 Hover시 CustomDepth 하이라이트
    • 클릭 시 상호작용 성공 처리
    • 비밀번호 버튼, 회전 퍼즐 요소 선택
  • 스페이스바
    • 캐논 : 투사체 발사
    • 오버뷰 : 모든 요소 동시 활성화
    • 핀볼 : 플리퍼 막대 작동
  • ESC : Inspection 종료
    • 카메라 복원
    • 입력 모드 복원
    • Lock 해제

0개의 댓글