Stop the opponent shrinking, skating and sprinting on the spot
The "smaller when swinging or tossing" was an anchor bug, not art. _fine.py scales a whole sheet so the --anchor frame is 224 px, and drawChar draws every sprite at img.height/SPRITE_H — so anchoring opponent_play on the TOSS, with arm and ball above the head, made 224 px cover the raised arm and shrank every body on that sheet. o_swing1 was 162 px against a 224 px standing pose. Each opponent batch now leads with a standing `ref` frame, which _fine.py anchors on and _regen.py discards. Correctly anchored the toss is 278 px and the man is full size; the swing is 221. The receiver no longer slides 0.12 m side to side while waiting on a serve — sliding a sprite sideways reads as skating, and the split-step swap to the run frames (removed earlier) had already been the other half of that. The idle bounce ball had one hardcoded offset for both men. They reach to opposite sides of the screen — the player is drawn from behind, the opponent from the front — so the opponent's ball sat out by his racket. dx and apex are per-man now, and o_bounce/o_bounce2 were redrawn with a patting hand to put it under. Also: the opponent wears a RED headband, and a prompt of mine that said "white" had quietly repainted it on six frames. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cd1c7a0cd8
commit
494bab1b69
17 files changed
+84
-14
No files matched your search
@@ -372,7 +372,11 @@ export const POSE_TIME = 0.38;
|
||||
// Measured off the sprite, not guessed: the player is RIGHT-handed, so he pats the ball with his
|
||||
// LEFT hand — the left-hand side of the image — whose palm sits ~0.69 m above his feet and ~0.36 m
|
||||
// off his centre line. The ball tops out just under that hand instead of beside it.
|
||||
export const BOUNCE_IDLE = { dx: 0.36, apex: 0.68, tempo: 3.6 };
|
||||
// dx/apex are per-man because the two sprites reach differently, and a single pair put the
|
||||
// opponent's ball out by his racket instead of under his palm. Both are FEEL KNOBS measured off the
|
||||
// drawn palm by eye — a skin-detector guess at the hand lands on a knee, so tune these by looking.
|
||||
export const BOUNCE_IDLE = { dx: 0.36, apex: 0.68, tempo: 3.6, // the player, drawn from behind
|
||||
oDx: 0.45, oApex: 0.55 }; // the opponent, drawn from the front
|
||||
|
||||
// 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