로직 보기 D
상태 머신모드는 늘 하나
타이틀→카운트다운→플레이→결승→결과일시정지
결과 → 다시 시작 = 카운트다운 · 처음으로 = 타이틀
// 플레이일 때만: 시간·볼 생성·상대 이동
const live = state == 'race' || state == 'finish';
if (live) raceT += dt;
상태 머신으로 만들어 줘: 타이틀·플레이·일시정지·결과
델타 타임16.7ms
dt 재기→입력→업데이트 (물리 ×2·애니·카메라)→그리기
const dt = Math.min(0.05, (now - last) / 1000);
for (let s = 0; s < 2; s++) stepWorld(dt / 2, live);
r.pos.addScaledVector(r.vel, h); // h = dt / 2
델타 타임으로 움직여 줘
난이도 곡선0%
구간마다 오르고, 체크포인트(점선) 뒤엔 살짝 쉼
스쿼시 앤 스트레치부피는 그대로
웅크림→늘어남→착지 찌그러짐
sx = 1 / Math.sqrt(sy); // 부피 = sx·sx·sy = 1
o.body.scale.set(sx, sy, sx); // 발바닥 기준
점선 = 원래 크기 · 주황 상자 = 지금 크기
착지할 때 스쿼시 앤 스트레치, 부피는 그대로 해 줘
연출 레이어1·2·3 키로 켜고 끄기