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:
11
princesse.gd
11
princesse.gd
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user