Steh-Pose final: frontal (17) nur am Spawn/vor erster Bewegung, danach seitlich (8) -- Stefans Original-Screenshots
This commit is contained in:
+14
-10
@@ -86,12 +86,12 @@ SLOPE_CT = 16
|
||||
# Charakter hat, ergibt sich daraus, WELCHE Slots sein BOB enthaelt
|
||||
# (nur Tony hat 13-16 = rennen, nur Smacks/Toucan 25-28 = schwimmen,
|
||||
# nur Toucan 29-31 als Richtungs-Paare = fliegen, nur Coco 35-44 = hangeln).
|
||||
# Slot 17 = FRONTALE Steh-Pose (DOSBox-Abgleich stand_timeline.png: das
|
||||
# Original steht mit Bauch zur Kamera -- BOB 34 bei Tony). Slot 8 (BOB 16)
|
||||
# ist nur eine Seiten-/Uebergangspose und sah beim Stehen falsch aus
|
||||
# (Stefans Feedback "Stand-Animation passt nicht").
|
||||
SLOT_IDLE = 17
|
||||
SLOT_IDLE_LANDING = 8 # kurze Pose direkt nach der Landung (Tabelle [4][8,8,8])
|
||||
# Steh-Posen (Stefans Screenshots + DOSBox-Serien, 26.07.2026):
|
||||
# - Am SPAWN (noch nie bewegt) steht das Original FRONTAL: Slot 17.
|
||||
# - Nach Bewegung steht es SEITLICH in Blickrichtung: Slot 8 (BOB 16).
|
||||
SLOT_STAND_FRONT = 17
|
||||
SLOT_STAND_SIDE = 8
|
||||
SLOT_IDLE = SLOT_STAND_SIDE # Fallback-Slot (existiert bei allen Chars)
|
||||
SLOT_JUMP = 9 # Springen/Fallen
|
||||
SLOT_SQUAT = 10 # Absprung-Hocke
|
||||
SLOT_ARMUP = 11 # Arm hoch / Daumen hoch (Spawn-Pose, Tabelle [70][10,11,10])
|
||||
@@ -291,6 +291,8 @@ class Player:
|
||||
self.jump_lock = False # Sprung gesperrt, bis Taste losgelassen
|
||||
# (Leertaste aus dem Tuer-Menue "leckte"
|
||||
# sonst als Sofortsprung ins Level)
|
||||
self.moved = False # schon bewegt seit Spawn/Charakterwechsel?
|
||||
# (frontale vs. seitliche Steh-Pose)
|
||||
self._grounded_before = False
|
||||
self.set_character(char, pos)
|
||||
|
||||
@@ -313,6 +315,7 @@ class Player:
|
||||
# Start-Sprite-Sequenz beim Levelstart/Charakterwechsel (Stefans
|
||||
# Beobachtung: Tony streckt die Hand nach oben, Smacks Daumen hoch)
|
||||
self.spawn_t = SPAWN_ANIM_SECONDS
|
||||
self.moved = False
|
||||
|
||||
def sprite(self, slot):
|
||||
'''(Surface, ax, ay) fuer einen Slot; Blickrichtung links = +50
|
||||
@@ -363,6 +366,7 @@ class Player:
|
||||
self.vx = move * speed
|
||||
if move:
|
||||
self.facing = move
|
||||
self.moved = True
|
||||
self.anim_t += dt * (RUN_ANIM_FPS / WALK_ANIM_FPS if self.running else 1.0)
|
||||
self.idle_t = 0.0
|
||||
else:
|
||||
@@ -581,10 +585,9 @@ class Player:
|
||||
if self.idle_t >= IDLE_ANIM_AFTER:
|
||||
i = int((self.idle_t - IDLE_ANIM_AFTER) * IDLE_WAIT_FPS) % len(ANIM_IDLE_WAIT)
|
||||
return ANIM_IDLE_WAIT[i]
|
||||
if self.idle_t < 0.17:
|
||||
# kurze Uebergangspose beim Anhalten/Landen (Original [4][8,8,8])
|
||||
return SLOT_IDLE_LANDING
|
||||
return SLOT_IDLE
|
||||
# Original-Verhalten (Stefans Screenshots): frontal nur solange die
|
||||
# Figur sich seit Spawn/Tuer noch nie bewegt hat, danach seitlich
|
||||
return SLOT_STAND_SIDE if self.moved else SLOT_STAND_FRONT
|
||||
|
||||
def draw(self, screen, cam_x, cam_y):
|
||||
# Schadens-Blinken: nach Herzverlust flackert die Figur kurz
|
||||
@@ -818,6 +821,7 @@ def run_level(clock, assets, audio_paths, map_name='W1L1'):
|
||||
player.x, player.y = spawn_px
|
||||
player.vy = 0.0
|
||||
player.spawn_t = SPAWN_ANIM_SECONDS
|
||||
player.moved = False
|
||||
start = time.monotonic() # neuer Versuch = frische Levelzeit
|
||||
|
||||
# Tuer-Sequenz: offen zeigen (Figur schaut rein), nach 1s die Aktion
|
||||
|
||||
Reference in New Issue
Block a user