From aa289c361685e0576cb30f3622ec11124e6a5b7f Mon Sep 17 00:00:00 2001 From: kjs Date: Thu, 13 Aug 2026 12:39:46 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B1=B7=EA=B8=B0=20=EC=95=A0=EB=8B=88?= =?UTF-8?q?=EB=A9=94=EC=9D=B4=EC=85=98=20=EA=B0=9C=EC=84=A0:=20=ED=94=84?= =?UTF-8?q?=EB=A0=88=EC=9E=84=20=EA=B5=90=EB=8C=80=20=EB=8C=80=EC=8B=A0=20?= =?UTF-8?q?=EC=B4=9D=EC=B4=9D=20=EB=B0=94=EC=9A=B4=EC=8A=A4=20+=20?= =?UTF-8?q?=EB=AF=B8=EC=84=B8=20=EA=B8=B0=EC=9A=B8=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 두 걷기 프레임의 몸통 각도가 달라 교대 시 도리도리처럼 보이던 문제. walk1 한 프레임에 hop 바운스와 ±3.4° 기울임으로 걷는 느낌을 냄. Co-Authored-By: Claude Fable 5 --- src/components/game/VillageView.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/components/game/VillageView.tsx b/src/components/game/VillageView.tsx index 940b387..aed35d3 100644 --- a/src/components/game/VillageView.tsx +++ b/src/components/game/VillageView.tsx @@ -411,19 +411,17 @@ export default function VillageView() { y: anim.y, draw: () => { shadow(anim.x, anim.y + 2, 11); - const frameName = working - ? "work" - : moving - ? Math.floor(now / 180) % 2 === 0 - ? "walk1" - : "walk2" - : "idle"; + // 걷기는 프레임 교대 대신 한 프레임 + 총총 바운스 + 미세 기울임 + // (두 걷기 프레임의 몸통 각도가 달라 교대 시 도리도리처럼 보이는 문제 회피) + const frameName = working ? "work" : moving ? "walk1" : "idle"; const sprite = catFramesRef.current.get(frameName); if (sprite) { const sh = 42; const sw = (sprite.width / sprite.height) * sh; + const tilt = moving ? Math.sin(now / 150) * 0.06 : 0; ctx.save(); ctx.translate(anim.x, anim.y + bob); + ctx.rotate(tilt); if (anim.flip) ctx.scale(-1, 1); ctx.drawImage(sprite, -sw / 2, -sh + 4, sw, sh); ctx.restore();