feat(collisions): filtre per altura — saltar esquiva momies, roques i altres jugadors

This commit is contained in:
JailDesigner committed 2026-04-25 11:49:48 +02:00
1 parent 7b09a076b2
commit cd50626b88
11 files changed
+88 -1

No files matched your search

+4
View File
@@ -4,6 +4,10 @@ sprite:
path: door.gif
size: [48, 32]
tile_size: [3, 2]
collision:
# Porta = mur infranquejable. Igual que el sarc, alçada efectiva
# infinita per impedir que un jugador la salte per damunt.
height: 999
flags:
collides: true
interactable: true
+5
View File
@@ -4,6 +4,11 @@ sprite:
path: floor_trap.gif
size: [16, 16]
tile_size: [1, 1]
collision:
# Trampa al sòl: alçada 0 → qualsevol salt l'esquiva. (Avui amb
# `collides: false` la trampa no entra al filtre de contacte, però
# declarem el camp per quan es cablege la detecció via àrea.)
height: 0
flags:
collides: false
interactable: false
+5
View File
@@ -14,6 +14,11 @@ anchor: feet
collision:
size: [16, 16]
base_size: [16, 16]
# Alçada del cos en píxels per al filtre de col·lisió per salt: un
# jugador amb jump_z > height no col·lisiona amb la momia (la salta
# per damunt). Amb impulse=240 + gravity=600 el pic ronda els 48 px,
# així que 24 deixa marge per esquivar amb un salt no perfecte.
height: 24
flags:
collides: true
interactable: false
@@ -4,6 +4,11 @@ sprite:
path: rolling_rock.gif
size: [16, 16]
tile_size: [1, 1]
collision:
# `size`/`base_size` no calen per a la roca (tot el sprite és cos),
# però sí declarem `height` per al filtre de salt: 16 px → fàcil
# d'esquivar amb un salt curt.
height: 16
flags:
collides: true
interactable: false
@@ -7,6 +7,13 @@ sprite:
# són "alçada" en falsa perspectiva, sense col·lisió. Perímetre ortogonal
# de 8 tiles (3 N + 3 S + 1 O + 1 E).
tile_size: [3, 1]
collision:
# Sarcòfag = obstacle massís: alçada efectiva infinita (999) per al
# filtre del salt. Un jugador no el pot saltar per damunt encara que
# el salt arribe al punt àlgid. La caixa de col·lisió real (logical
# 48×16) la calcula `placeSarcophagus` a partir de la geometria del
# mapa, no des d'aquest YAML.
height: 999
flags:
collides: true
interactable: true
+4
View File
@@ -4,6 +4,10 @@ sprite:
path: torch.gif
size: [16, 16]
tile_size: [1, 1]
collision:
# Decoratiu, no col·lisiona. Camp `height` declarat per coherència
# amb la resta d'entitats; no té efecte mentre `collides: false`.
height: 0
flags:
collides: false
interactable: false
+5
View File
@@ -4,6 +4,11 @@ sprite:
path: wall_trap.gif
size: [16, 16]
tile_size: [1, 1]
collision:
# Trampa de paret: ix d'una vora alta i no es pot saltar per damunt.
# 999 = infranquejable. Igual que floor_trap, el filtre només té efecte
# quan la detecció de contacte hi entre.
height: 999
flags:
collides: false
interactable: false