Files
2nd/00_Raw/2026-04-26-Skybound_Red_Striker_Movement_Jitter_Fix.md
T

3.9 KiB

Skybound Red Striker Movement Jitter Fix

작성일: 2026-04-26 21:15 KST

요청 요약

  • 빨간 적기가 여전히 어디에 낀 것처럼 바들바들 떨린다.
  • 이전 수정 이후에도 실제 플레이 화면에서 동일 증상이 보여 원인을 다시 확인해야 한다.

확인 결과

빨간 적기 계열의 떨림은 단순한 스프라이트 문제가 아니라 이동 로직과 렌더링 좌표가 동시에 만드는 문제로 판단했다.

확인한 주요 지점:

  • CombatSystem.updateStrikerAI
  • CombatSystem.applyEnemySeparation
  • GameRenderer.renderEnemies
  • GameRenderer의 lock-on indicator 렌더링
  • EntityManager.spawnEnemy의 pooled enemy 초기화

핵심 원인

updateStrikerAI에서 스트라이커가 목표 X 좌표에 가까워진 뒤에도 아래 방식으로 계속 밀어붙이고 있었다.

e.x += Math.sign(desiredX - e.x) * 1.1

이 방식은 목표점을 살짝 지나친 다음 다음 프레임에 반대 방향으로 다시 움직이게 만든다.

결과적으로 목표 지점 근처에서 좌우로 계속 오버슈트가 발생해 “어디에 낀 것처럼 떠는” 느낌이 난다.

추가로 적기 분리, 중력형 스킬, 락온 표시가 같은 적을 동시에 참조하면 실제 좌표의 미세 보정이 화면에 그대로 노출될 수 있었다.

적용한 해결 방향

스트라이커 이동은 오버슈트가 나지 않는 감쇠형 접근으로 변경했다.

렌더링은 실제 충돌 좌표와 별개로 표시용 좌표를 한 번 더 부드럽게 보간한다.

즉 게임 로직은 기존처럼 정확한 실제 좌표를 사용하고, 화면에 보이는 위치만 안정적으로 따라가게 했다.

적용한 변경

스트라이커 AI 오버슈트 제거

수정 파일:

  • /Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/CombatSystem.ts

변경 내용:

  • Math.sign(...) * 1.1 고정 이동 제거
  • 목표 지점까지 남은 거리보다 더 많이 움직이지 않도록 제한
  • 목표 X 근처에서 좌우 ping-pong이 발생하지 않게 감쇠 이동 적용

적기 표시 좌표 스무딩 추가

수정 파일:

  • /Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/types.ts
  • /Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts
  • /Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/EntityManager.ts

추가 필드:

  • renderX
  • renderY
  • renderRotation

적용 내용:

  • 적기 실제 좌표가 순간 보정되더라도 화면 좌표는 부드럽게 따라간다.
  • 너무 큰 위치 차이가 있으면 순간이동/스폰으로 판단하고 즉시 스냅한다.
  • pooled enemy 재사용 시 이전 적기의 표시 좌표가 남지 않도록 spawn 시 초기화한다.

락온 표시 떨림 완화

수정 파일:

  • /Volumes/Data/project/Antigravity/Skybound/src/features/game/systems/GameRenderer.ts

변경 내용:

  • 락온 브라켓이 실제 좌표가 아니라 renderX, renderY를 우선 사용하게 변경
  • 적기 본체는 부드러운데 락온 표시만 떨리는 상황을 방지

검증

  • npm run build 성공
  • 출력 디렉터리: dist/49
  • TypeScript 빌드와 Vite production build 모두 통과

기대 효과

  • 빨간 스트라이커가 목표 지점 근처에서 좌우로 바들바들 떠는 현상 완화
  • 적기 분리, 중력 스킬, 락온 UI가 함께 작동해도 화면상 움직임이 더 안정적으로 보임
  • 충돌 판정은 실제 좌표를 유지하므로 게임플레이 정확도는 유지

추가 관찰 포인트

이번 수정은 스트라이커 AI의 명확한 오버슈트 원인을 제거한 것이다.

만약 특정 스킬 영역 안에서만 떨림이 남는다면 다음 후보는 gravity mine 또는 vortex pull 계열의 강제 위치 보정이다. 이 경우에는 해당 pull force에도 속도 기반 감쇠를 적용하는 것이 좋다.