카테고리 없음

Oblivio 캐릭터 클래스 설계 및 개발: 뼈대 세우기

eclipse2 2026. 5. 13. 00:08

시스템 기획이 끝난 후, 플레이어의 분신이 될 AOblivioCharacter 클래스와 이를 조종할 AOblivioCharacterController를 세팅했다. 탑다운(Top-Down) 뷰라는 시점의 특성과, 다양한 생존 도구를 다뤄야 하는 입력(Input)의 확장성을 고려하여 뼈대를 잡았다.

1. 베이스 컴포넌트 및 탑다운(Top-Down) 시점 설계

캐릭터가 폐병원의 복도를 내려다보는 으스스한 뷰를 연출하기 위해 카메라 시스템을 부착했다.

  • SpringArmComponent를 900.f 길이로 설정하고, X축 방향으로 -65도 꺾어 캐릭터를 위에서 내려다보는 전형적인 탑다운 시점을 구현했다.
  • 이 시점에서는 벽 뒤에 있는 캐릭터나 몬스터가 가려질 수 있으므로, 카메라와 캐릭터 사이에 있는 벽을 투명하게(Dither) 만들어주는 'Wall Occlusion' 로직의 기반도 함께 세팅해 두었다.

2. Enhanced Input 시스템을 통한 조작 매핑

언리얼 엔진 5의 최신 입력 시스템인 Enhanced Input을 도입하여 조작 로직을 AOblivioCharacterController로 분리했다.

  • 마우스 회전 동기화: 탑다운 게임의 핵심은 '캐릭터가 마우스 커서 방향을 바라보는 것'이다. PlayerTick에서 매 프레임 GetHitResultUnderCursor로 마우스 위치를 쏘고(Raycast), 해당 지점으로 캐릭터를 회전시키는 로직(UpdateMouseRotation)을 구현했다.
  • 크래프팅, 인벤토리, 달리기, 휠 스크롤(손전등 포커스) 등 다양한 액션들을 Mapping Context에 바인딩하여 확장이 쉽도록 설계했다.

3. 무기/장비 시스템 (손전등과 투척물)

단순한 맨몸 생존이 아니라 장비를 활용하는 시스템을 구축했다.

  • 기본 장비(손전등): 스폰 시 FlashlightWeapon 액터를 캐릭터의 WeaponSocket에 강제로 부착(Attach)시켰다.
  • 투척물 시스템: 조명탄(Flare)이나 섬광탄(Flashbang)을 던질 수 있는 로직을 만들었다. 마우스 커서가 가리키는 지점(GetAimingLocation)을 3D 월드 좌표로 변환하고, 몽타주(Montage) 애니메이션의 AnimNotify 타이밍에 맞춰 실제 액터를 해당 좌표로 투척하도록 구현했다.

탑다운 뷰 특성상 마우스 커서의 2D 스크린 좌표를 3D 월드 좌표로 정확히 변환하는 것(GetHitResultUnderCursor)이 조작감의 핵심이었다. 시점이 고정되어 있다 보니 조작이 단조로울 수 있었는데, 마우스 방향으로 캐릭터가 동기화되고 휠로 손전등의 빛 번짐(Focus)을 조절할 수 있게 만드니 훨씬 긴장감 있는 조작이 완성되었다.