본문으로 건너뛰기

아이스메이크 기능 구현 설계

목적​

유효한 수면 위에 움직이지 않는 충돌 가능한 얼음 기둥을 생성해 발판, 엄폐물, 길막기와 높이 조절에 사용한다. 생성된 기둥은 물리 오브젝트나 문을 밀 수 있지만 피해를 주지 않는다. 생성 가능한 표면 판정과 생성·제거 규칙을 공통 구조로 만든다.

구현 범위​

  • 지정된 수면 영역에서만 얼음 기둥 생성
  • 카메라 중앙 조준으로 생성 위치 탐색
  • 생성 성공 뒤 능력 변경·조준 취소와 무관하게 흐르는 2초 생성 쿨다운
  • 동시에 최대 3개 유지
  • 네 번째 생성 시 가장 오래된 기둥 제거
  • 생성한 기둥을 조준해 직접 제거
  • 생성한 기둥은 자동 만료 없이 유지
  • 생성 불가 위치의 시각 피드백
  • 조준 취소 시 미리보기 정리, 레벨 재시작·클리어 시 생성물 정리

물체를 얼리거나 물리 시뮬레이션으로 기둥을 움직이는 기능은 제공하지 않는다. 기둥은 CryonicTarget 반응 타입을 가진 수면에서만 생성하며, 별도의 수명 만료 타이머는 두지 않는다.

권장 구조​

UCryonisAbility (UPlayerAbilityComponent가 생성·선택)
├─ 생성 위치 탐색: 카메라 중앙 Line Trace
├─ 유효 수면 판정: AbilityReactionComponent의 CryonicTarget 반응 타입
├─ 생성물 목록: 생성 순서대로 최대 3개 관리
└─ 생성·제거 요청

AIcePillar
├─ 충돌 컴포넌트
├─ 메시와 머티리얼
└─ 생성 순서와 제거 처리

수면 액터에는 AbilityReactionComponent를 추가하고 ReactionType을 CryonicTarget으로 설정한다. 수면 높이, 얼음 크기 제한, 생성 금지 구역이 필요해지면 수면 전용 컴포넌트로 확장한다.

상태와 위치 판정​

비활성 → 조준 → 생성 가능 또는 생성 불가 → 생성 쿨다운 → 조준
  1. 카메라 중앙에서 최대 생성 거리까지 Trace한다.
  2. 적중한 액터의 AbilityReactionComponent가 CryonicTarget인지 확인한다.
  3. 적중 위치가 수면 영역 안인지 확인한다.
  4. 생성 후보가 플레이어와 겹치면 발밑 수면을 다시 판정하고 그 위치를 생성 후보로 사용한다. 플레이어와의 겹침은 생성 금지 사유가 아니다.
  5. 기둥 생성 공간이 기존 얼음, 벽 또는 주요 오브젝트와 겹치지 않는지 검사한다.
  6. 유효하면 미리보기와 생성 가능 피드백을 표시한다.

생성 위치는 수면 높이를 기준으로 정렬한다. 기둥의 바닥이 수면 아래로 약간 들어가도록 배치하면 떠 보이는 틈을 줄일 수 있다.

생성과 제거​

  • 사용 입력 시 유효 위치에 AIcePillar를 생성하고 조준을 유지한 채 2초 생성 쿨다운을 시작한다.
  • 생성 위치가 유효하지 않거나 생성 쿨다운 중이면 생성하지 않으며 쿨다운도 변경하지 않는다.
  • 새 기둥을 목록의 끝에 넣는다.
  • 네 번째 기둥을 생성하면 목록에서 가장 오래된 기둥을 바로 제거한다.
  • 얼음 기둥을 조준한 상태에서 사용하면 새 생성 대신 해당 기둥을 제거한다.
  • 기둥 제거는 즉시 제거 또는 짧은 해체 연출 뒤 제거 중 하나로 처리한다.

생성물은 물리 시뮬레이션을 사용하지 않는 고정 충돌 오브젝트다. 플레이어가 안정적으로 올라설 수 있고, 문이나 물리 오브젝트와 충돌해 밀어낼 수 있어야 한다. 얼음 자체는 이동하지 않으며 피해 판정도 만들지 않는다.

입력 연결​

동작입력처리
얼음 선택IA_AbilityWheel / Tab 홀드 후 놓기아이스메이크 능력 적용
위치 조준화면 중앙수면·겹침 판정과 미리보기 갱신
생성 또는 제거IA_Interact / E유효 수면에 생성, 기존 얼음에는 제거
취소IA_AbilityUse / Q 또는 IA_Cancel / 우클릭미리보기 제거와 능력 상태 종료
레벨 재시작메뉴의 재시작 항목생성물 정리 후 레벨 재시작

안전성과 피드백​

  • 생성 위치에는 반투명 미리보기로 가능·불가를 구분하고, 생성 가능한 위치는 얼음 기둥이 아래에서 위로 솟아오르는 프리뷰를 반복 표시한다.
  • 실제 생성 시에도 동일한 상승 연출을 재생한 뒤 고정 기둥으로 유지한다.
  • 플레이어와 겹치는 후보는 발밑 수면을 확인해 생성한다. 발밑에 유효한 수면이 없거나 다른 장애물과 겹치면 생성하지 않는다.
  • 생성 쿨다운은 조준을 취소하거나 다른 능력으로 변경해도 계속 흐르며, 아이스메이크 조준 중에는 생성 불가 상태를 별도 표시한다.
  • 재시작과 클리어 시 생성 목록을 비우고 남은 액터를 정리한다.

구현 순서와 완료 기준​

  1. 수면에 AbilityReactionComponent의 CryonicTarget 반응 타입과 적절한 Trace 충돌을 설정한다.
  2. 얼음 기둥 액터의 메시와 충돌을 만든다.
  3. 생성 위치 Trace, 유효성, 미리보기를 구현한다.
  4. 생성 쿨다운, 생성물 목록과 최대 3개 교체 규칙을 구현한다.
  5. 조준 제거와 취소·재시작 정리를 연결한다.

다음 조건을 실제 플레이로 확인하면 완료다.

  • 수면 밖 또는 막힌 위치에는 생성되지 않는다.
  • 생성 성공 뒤 2초 동안 새 기둥이 생성되지 않는다.
  • 최대 3개가 유지되고 네 번째 생성 시 가장 오래된 기둥만 제거된다.
  • 플레이어가 생성한 기둥을 안정적으로 발판으로 쓸 수 있다.
  • 기둥이 플레이어와 적의 이동·시야를 막고, 물리 오브젝트나 문을 밀 수 있다.
  • 기둥이 자동으로 사라지지 않고 직접 제거 또는 최대 개수 규칙으로 제거된다.
  • 재시작 뒤 얼음 기둥과 미리보기가 남지 않는다.

관련 문서​