princesse/coyote: amélioration de la détection

Si la princesse touchait la plateforme pour moi de la durée du buffer,
il se trouvait que ça buggait. A la place de regarder uniquement le plus
ancien élément du buffer de coyote, je fais un OU logique entre tous ses
éléments, comme ça si on a éffleuré une plateforme même pour une frame
ça compte.
This commit is contained in:
Thomas Lavocat
2023-04-29 22:27:00 +02:00
parent a5eb31e426
commit ab71180eab

View File

@@ -264,6 +264,13 @@ func move_and_handle_collisions() -> void:
if layer_of_collision == PICS_BLOCK_LAYER:
get_tree(). reload_current_scene()
func get_coyote(table: Array):
var result = false
for i in table:
result = result or i
return result
func read_input() -> void:
# Lis les commandes du joueur pour piloter Princesse
@@ -273,7 +280,7 @@ func read_input() -> void:
# Le joueur veut-il sauter ou kicker ?
if Input.is_action_just_pressed("jump" + action_suffix):
# Peut-il sauter ?
if ground_far_detect.is_colliding() or (is_on_floor() or coyote_ground[0]):
if ground_far_detect.is_colliding() or (is_on_floor() or get_coyote(coyote_ground)):
need_jump=true
# Peut-il kicker ?
if grab_wall:
@@ -285,7 +292,7 @@ func read_input() -> void:
else:
kick_direction = -1
# Dès qu'il peut et veut sauter, déclencher le saut
if need_jump and (is_on_floor() or coyote_ground[0]):
if need_jump and (is_on_floor() or get_coyote(coyote_ground)):
need_jump = false
if not jumping:
jumping = true