히트스톱 (타격 정지)

Hit-Stop

타격이 맞는 순간 아주 짧게(몇 프레임) 모든 움직임을 멈춰서 충격의 무게감을 강조하는 기법.

다른 이름: 프레임 프리즈Freeze frame타격 정지역경직
···
html
<div class="hsstage"><div class="hshero" id="hero"></div><div class="hstarget" id="tgt2"><div class="hsburst" id="burst"></div></div></div><div class="hslabel" id="lbl">STRIKING</div>
css
.hsstage{position:relative;width:100%;height:100%}
.hshero{position:absolute;left:22%;top:50%;width:clamp(18px,8vmin,28px);height:clamp(18px,8vmin,28px);margin-top:-14px;border-radius:5px;background:var(--accent)}
.hstarget{position:absolute;left:58%;top:50%;width:clamp(24px,10vmin,38px);height:clamp(24px,10vmin,38px);margin-top:-19px;border-radius:6px;background:var(--surface);border:2px solid var(--line)}
.hsburst{position:absolute;inset:-40%;border-radius:50%;background:radial-gradient(circle, color-mix(in srgb,var(--accent-2) 70%,transparent), transparent 70%);opacity:0;transform:scale(0.3)}
.hslabel{position:absolute;left:50%;bottom:8%;transform:translateX(-50%);font:700 clamp(9px,2.6vmin,11px) monospace;color:var(--muted);letter-spacing:.1em}
js
const hero=document.getElementById('hero');
const tgt=document.getElementById('tgt2');
const burst=document.getElementById('burst');
const lbl=document.getElementById('lbl');
hero.style.transition='transform .34s cubic-bezier(.5,0,.4,1)';
tgt.style.transition='transform .06s linear';
burst.style.transition='opacity .18s ease-out, transform .18s ease-out';
function swing(){
  lbl.textContent='STRIKING';
  hero.style.transform='translateX(0)';
  requestAnimationFrame(function(){ hero.style.transform='translateX(90px)'; });
  setTimeout(impact, 330);
}
function impact(){
  lbl.textContent='HIT-STOP';
  hero.style.transitionDuration='0s';
  tgt.style.transform='scale(0.82)';
  burst.style.opacity='1'; burst.style.transform='scale(1)';
  setTimeout(function(){
    lbl.textContent='RECOVER';
    tgt.style.transitionDuration='.3s';
    tgt.style.transform='scale(1)';
    burst.style.opacity='0'; burst.style.transform='scale(1.4)';
    hero.style.transitionDuration='.3s';
    hero.style.transform='translateX(40px)';
    setTimeout(function(){
      hero.style.transitionDuration='.34s';
      hero.style.transform='translateX(0)';
      setTimeout(swing, 500);
    }, 320);
  }, 90);
}
setTimeout(swing, 400);

히트스톱은 타격이 적중하는 그 프레임에 게임 전체(또는 관련된 캐릭터들)의 애니메이션과 물리 업데이트를 몇십 밀리초(보통 30~120ms) 동안 완전히 멈추는 기법이다. 사람 눈에는 "멈춤"이 아니라 "무언가 엄청난 게 부딪혔다"는 무게감으로 읽힌다 — 실제로 물체가 세게 부딪히면 아주 짧은 순간 서로 맞물려 정지하는 물리적 직관과 맞닿아 있다.

지속 시간은 타격의 크기에 비례해서 조절한다. 약한 평타는 30~50ms로 거의 느껴지지 않을 정도로 짧게, 필살기나 크리티컬은 100ms 이상으로 늘려 확실히 체감되게 한다. 정지가 끝난 뒤 화면 흔들림(screen shake)이나 히트 이펙트가 곧바로 이어지면 정지-폭발의 리듬이 만들어진다.

정지가 너무 길면 게임이 멈춘 것처럼 느껴지고 입력 반응성이 떨어진다는 착각을 준다. 입력 버퍼링과 함께 구현해서, 히트스톱 중에도 플레이어 입력은 계속 받아두었다가 정지가 풀리는 즉시 반영하는 것이 일반적이다.

언제 쓰나

근접 타격, 처치, 필살기 적중처럼 순간적인 충돌이 있는 액션 게임. 대화·메뉴 등 비전투 화면에는 쓰지 않는다.