Wind the serve up with the pull, and stop the frames flickering
Four new frames (p_pull1..4) turn the slingshot drag into the serve's wind-up: racket above the head, behind the head, behind the back, fully coiled, picked off pullFrac — the same 0..1 that sets the shot's power — so the gesture and the man are one movement and the release snaps to the smash. The two bounce frames are one drawing now. p_bounce2 is p_bounce with the free arm sheared up 12px and nothing else touched, so the swap cannot flicker, and it follows the ball instead of its rising phase; BOUNCE_IDLE was re-measured off the sprite so the ball tops out under the palm. p_toss had the tossed ball drawn into it — cut, canvas height kept, because the game scales him off img.height. The runner: hip centres sat -2.0/+7.1/-6.0/-0.1 px off the sprite centre, a 13px lateral jump at 12 frames a second, and Oliver's diagnosis was right that all four frames leaned the same way and lifted the same leg. Frames 3 and 4 mirrored, all four padded to one width with the hip on the centre line. assets/_derive.py holds the three derivations, since "the same drawing with one small difference" is the one thing the generator cannot draw. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f71d9293fc
commit
b1f8ea3240
16 files changed
+559
-419
No files matched your search
@@ -333,7 +333,9 @@ export const POSE_TIME = 0.38;
|
||||
|
||||
// the server's idle ball bounce: sideways offset to the free hand, apex height, tempo.
|
||||
// tempo drives the ball, the hand sprite AND the pock sound — one value, always in sync.
|
||||
export const BOUNCE_IDLE = { dx: 0.5, apex: 0.55, tempo: 3.6 };
|
||||
// Measured off the sprite, not guessed: in p_bounce2 the raised palm sits 0.63 m above his feet and
|
||||
// 0.43 m to the side of his centre line, so the ball tops out just under the hand instead of beside it.
|
||||
export const BOUNCE_IDLE = { dx: 0.43, apex: 0.6, tempo: 3.6 };
|
||||
|
||||
// generated sprite sheets: the idle pose is this many pixels tall; all scales derive from it
|
||||
export const SPRITE_H = 224; // 2x remaster (was 112). RES is 3, so the player at the baseline
|
||||
|
||||
Reference in new issue
Block a user