콘텐츠로 이동

타격감과 피격 피드백

피해가 숫자만 감소시키지 않고 즉시 읽히도록 1차 타격 피드백을 적용했습니다. 전역 게임 시간을 멈추는 방식은 사용하지 않습니다. 맞은 액터만 짧게 경직되므로 다수 적 전투와 입력 응답을 유지합니다.

한 번의 타격에서 일어나는 일

순서 반응 기본값 담당 모듈
1 피해·방어력 적용 기존 전투 수치 유지 Player 또는 Enemy
2 흰색 피격 섬광 0.07~0.08초 HitReaction2D
3 맞은 액터 국소 경직 0.045~0.055초 HitReaction2D
4 타격 방향 넉백 적 72, 플레이어 46 초기 충격 HitReaction2D
5 충격 링·방사선 0.18초, 반경 26px HitFeedbackDirector
6 카메라 미세 흔들림 적 0.13, 플레이어 0.34 Trauma HitFeedbackDirector

기본기 투사체는 진행 방향, 점멸은 이동 경로, 자기장은 플레이어에서 대상 바깥쪽, 적 접촉은 적에서 플레이어 방향을 hit_context로 전달합니다. 방어력에 막힌 타격은 파란색, 체력 타격은 황색, 전기 스킬은 청록색, 플레이어 피격은 적색으로 구분합니다.

피해 계약

기존 take_damage(amount) 호출은 그대로 유효합니다. 타격 방향이나 표현 강도가 있는 공격만 선택적으로 두 번째 인자를 전달합니다.

target.take_damage(damage, {
    &"source_kind": &"weapon_projectile",
    &"source_position": projectile.global_position,
    &"impact_direction": projectile.direction,
    &"impact_strength": 1.0,
})

hit_context는 피해량을 바꾸지 않습니다. 액터는 실제 체력·방어력 감소량과 치명 여부를 damaged Signal로 방출하고 피드백 모듈이 이를 읽습니다.

모듈 구조

공격 모듈
  └─ take_damage(amount, hit_context)
       ├─ Player / Enemy                 # 피해 계산
       ├─ HitReaction2D                  # 해당 액터 섬광·경직·넉백
       └─ damaged Signal
            └─ HitFeedbackDirector       # 충격 링·카메라 Trauma
                 └─ HitFeedbackProfile   # 표현 수치와 동시 표시 상한
  • Director는 액터의 체력, 방어력 또는 공격 구현 내부를 읽지 않습니다.
  • 액터가 사라지면 등록 정보도 tree_exited에서 제거됩니다.
  • 충격 표시는 타격마다 Node를 만들지 않고 Director 하나가 최대 32개 기록을 그립니다.
  • hit_feedback_enabled를 끄면 Director가 설치되지 않고 액터의 섬광·경직·넉백도 비활성화됩니다.
  • 프로필만 교체해 카메라 강도, 수명, 반경, 방사선 수와 동시 표시 상한을 바꿀 수 있습니다.

현재 범위와 다음 단계

이번 단계에는 무기·점멸·자기장·적 접촉의 시각·움직임 반응이 포함됩니다. 공격별 음향, 처치 전용 파편, 게임패드 진동, 강공격 전용 전역 히트스톱은 아직 적용하지 않았습니다. 전역 히트스톱은 다수 적과 Web 입력 지연을 실제 플레이로 검증한 뒤 별도 정책으로 추가합니다.

검증

  • 적 타격이 섬광·경직·넉백·충격 링·카메라 Trauma를 동시에 생성하는지 검사합니다.
  • 플레이어 피격과 치명타가 별도 강도로 집계되는지 검사합니다.
  • 충격 기록이 32개 상한을 넘지 않는지 검사합니다.
  • 기능을 끈 구성에서 Director와 액터 반응이 모두 사라지는지 검사합니다.
  • 대형 작전 성능 게이트에서 전체 Node와 프레임 예산을 다시 측정합니다.

검색 별칭

타격감, 손맛, 피격감, 히트 리액션, 피격 섬광, 넉백, 경직, 히트스톱, 카메라 흔들림, 카메라 셰이크, 충격 이펙트, 데미지 피드백, 타격 VFX