아이스메이크 기능 구현 설계
목적
유효한 수면 위에 움직이지 않는 충돌 가능한 얼음 기둥을 생성해 발판, 엄폐물, 길막기와 높이 조절에 사용한다. 생성된 기둥은 물리 오브젝트나 문을 밀 수 있지만 피해를 주지 않는다. 생성 가능한 표면 판정과 생성·제거 규칙을 공통 구조로 만든다.
구현 범위
- 지정된 수면 영역에서만 얼음 기둥 생성
- 카메라 중앙 조준으로 생성 위치 탐색
- 생성 성공 뒤 능력 변경·조준 취소와 무관하게 흐르는 2초 생성 쿨다운
- 동시에 최대 3개 유지
- 네 번째 생성 시 가장 오래된 기둥 제거
- 생성한 기둥을 조준해 직접 제거
- 생성한 기둥은 자동 만료 없이 유지
- 생성 불가 위치의 시각 피드백
- 조준 취소 시 미리보기 정리, 레벨 재시작·클리어 시 생성물 정리
물체를 얼리거나 물리 시뮬레이션으로 기둥을 움직이는 기능은 제공하지 않는다. 기둥은 CryonicTarget 반응 타입을 가진 수면에서만 생성하며, 별도의 수명 만료 타이머는 두지 않는다.
권장 구조
UCryonisAbility (UPlayerAbilityComponent가 생성·선택)
├─ 생성 위치 탐색: 카메라 중앙 Line Trace
├─ 유효 수면 판정: AbilityReactionComponent의 CryonicTarget 반응 타입
├─ 생성물 목록: 생성 순서대로 최대 3개 관리
└─ 생성·제거 요청
AIcePillar
├─ 충돌 컴포넌트
├─ 메시와 머티리얼
└─ 생성 순서와 제거 처리
수면 액터에는 AbilityReactionComponent를 추가하고 ReactionType을 CryonicTarget으로 설정한다. 수면 높이, 얼음 크기 제한, 생성 금지 구역이 필요해지면 수면 전용 컴포넌트로 확장한다.
상태와 위치 판정
비활성 → 조준 → 생성 가능 또는 생성 불가 → 생성 쿨다운 → 조준
- 카메라 중앙에서 최대 생성 거리까지 Trace한다.
- 적중한 액터의
AbilityReactionComponent가CryonicTarget인지 확인한다. - 적중 위치가 수면 영역 안인지 확인한다.
- 생성 후보가 플레이어와 겹치면 발밑 수면을 다시 판정하고 그 위치를 생성 후보로 사용한다. 플레이어와의 겹침은 생성 금지 사유가 아니다.
- 기둥 생성 공간이 기존 얼음, 벽 또는 주요 오브젝트와 겹치지 않는지 검사한다.
- 유효하면 미리보기와 생성 가능 피드백을 표시한다.
생성 위치는 수면 높이를 기준으로 정렬한다. 기둥의 바닥이 수면 아래로 약간 들어가도록 배치하면 떠 보이는 틈을 줄일 수 있다.
생성과 제거
- 사용 입력 시 유효 위치에
AIcePillar를 생성하고 조준을 유지한 채 2초 생성 쿨다운을 시작한다. - 생성 위치가 유효하지 않거나 생성 쿨다운 중이면 생성하지 않으며 쿨다운도 변경하지 않는다.
- 새 기둥을 목록의 끝에 넣는다.
- 네 번째 기둥을 생성하면 목록에서 가장 오래된 기둥을 바로 제거한다.
- 얼음 기둥을 조준한 상태에서 사용하면 새 생성 대신 해당 기둥을 제거한다.
- 기둥 제거는 즉시 제거 또는 짧은 해체 연출 뒤 제거 중 하나로 처리한다.
생성물은 물리 시뮬레이션을 사용하지 않는 고정 충돌 오브젝트다. 플레이어가 안정적으로 올라설 수 있고, 문이나 물리 오브젝트와 충돌해 밀어낼 수 있어야 한다. 얼음 자체는 이동하지 않으며 피해 판정도 만들지 않는다.
입력 연결
| 동작 | 입력 | 처리 |
|---|---|---|
| 얼음 선택 | IA_AbilityWheel / Tab 홀드 후 놓기 | 아이스메이크 능력 적용 |
| 위치 조준 | 화면 중앙 | 수면·겹침 판정과 미리보기 갱신 |
| 생성 또는 제거 | IA_Interact / E | 유효 수면에 생성, 기존 얼음에는 제거 |
| 취소 | IA_AbilityUse / Q 또는 IA_Cancel / 우클릭 | 미리보기 제거와 능력 상태 종료 |
| 레벨 재시작 | 메뉴의 재시작 항목 | 생성물 정리 후 레벨 재시작 |
안전성과 피드백
- 생성 위치에는 반투명 미리보기로 가능·불가를 구분하고, 생성 가능한 위치는 얼음 기둥이 아래에서 위로 솟아오르는 프리뷰를 반복 표시한다.
- 실제 생성 시에도 동일한 상승 연출을 재생한 뒤 고정 기둥으로 유지한다.
- 플레이어와 겹치는 후보는 발밑 수면을 확인해 생성한다. 발밑에 유효한 수면이 없거나 다른 장애물과 겹치면 생성하지 않는다.
- 생성 쿨다운은 조준을 취소하거나 다른 능력으로 변경해도 계속 흐르며, 아이스메이크 조준 중에는 생성 불가 상태를 별도 표시한다.
- 재시작과 클리어 시 생성 목록을 비우고 남은 액터를 정리한다.
구현 순서와 완료 기준
- 수면에
AbilityReactionComponent의CryonicTarget반응 타입과 적절한 Trace 충돌을 설정한다. - 얼음 기둥 액터의 메시와 충돌을 만든다.
- 생성 위치 Trace, 유효성, 미리보기를 구현한다.
- 생성 쿨다운, 생성물 목록과 최대 3개 교체 규칙을 구현한다.
- 조준 제거와 취소·재시작 정리를 연결한다.
다음 조건을 실제 플레이로 확인하면 완료다.
- 수면 밖 또는 막힌 위치에는 생성되지 않는다.
- 생성 성공 뒤 2초 동안 새 기둥이 생성되지 않는다.
- 최대 3개가 유지되고 네 번째 생성 시 가장 오래된 기둥만 제거된다.
- 플레이어가 생성한 기둥을 안정적으로 발판으로 쓸 수 있다.
- 기둥이 플레이어와 적의 이동·시야를 막고, 물리 오브젝트나 문을 밀 수 있다.
- 기둥이 자동으로 사라지지 않고 직접 제거 또는 최대 개수 규칙으로 제거된다.
- 재시작 뒤 얼음 기둥과 미리보기가 남지 않는다.