From c013f1f8adf243400117b463e889646e36905f3c Mon Sep 17 00:00:00 2001 From: Thomas Lavocat Date: Mon, 1 May 2023 08:47:30 +0200 Subject: [PATCH] princesse/prout: correction du dash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le dash accroché au mur est maintenant fonctionnel Le dash par défaut fait avancer dans la précédente direction du personnage si le joueur ne donne pas de commande et sinon utilise la commande du joueur pour choisir la direction Le dash en diagonnale est maintenant cohérent avec le dash sur un seul axe. --- princesse.gd | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/princesse.gd b/princesse.gd index 3667019..e1f37de 100644 --- a/princesse.gd +++ b/princesse.gd @@ -267,14 +267,8 @@ func dash() -> void: if dash_step >= 0: dash_step -= 1 - var doubley = 1 - var doublex = 1 - if abs(dash_direction_y) and not abs(dash_direction_x): - doubley=1.1 - if abs(dash_direction_x) and not abs(dash_direction_y): - doublex=1.1 - velocity.y = DASH_SPEED_TABLE[dash_step] * DASH_SPEED * dash_direction_y * doubley - velocity.x = DASH_SPEED_TABLE[dash_step] * DASH_SPEED * dash_direction_x * doublex + velocity.y = DASH_SPEED_TABLE[dash_step] * DASH_SPEED * dash_direction_y + velocity.x = DASH_SPEED_TABLE[dash_step] * DASH_SPEED * dash_direction_x else: cancel_dash() @@ -386,22 +380,31 @@ func read_input() -> void: Input.start_joy_vibration(0, 1, 0.5, 0.2) available_dashs -=1 dashing = true - dash_step = DASH_SPEED_TABLE.size()-1 var axis_x = Input.get_axis( "move_left" + action_suffix, "move_right" + action_suffix ) + var axis_y = Input.get_axis( + "move_up" + action_suffix, + "move_down" + action_suffix + ) if not is_zero_approx(axis_x): if axis_x < 0: dash_direction_x = -1 else: dash_direction_x = 1 else: - dash_direction_x = 0 - var axis_y = Input.get_axis( - "move_up" + action_suffix, - "move_down" + action_suffix - ) + # Si le joueur tient le mur, alors, il ne faut pas dasher dans + # dans le mur en cas de dash + if grab_wall: + direction = -direction + # Si le joueur n'appuye sur rien, alors dasher en avant par + # défaut + dash_direction_x = direction + # Si le joueur spécifie une commande, alors, ne pas supposer + # Qu'il veuille aller en avant + if not is_zero_approx(axis_y): + dash_direction_x = 0 if not is_zero_approx(axis_y): if axis_y < 0: dash_direction_y = -1 @@ -409,7 +412,12 @@ func read_input() -> void: dash_direction_y = 1 else: dash_direction_y = 0 - print("dash x", axis_x, "y", axis_y) + # Limiter le dash en diagonnale car sinon il est trop grand + # par rapport à un dash dans une seule direction + if dash_direction_x and dash_direction_y: + dash_step = DASH_SPEED_TABLE.size()-3 + else: + dash_step = DASH_SPEED_TABLE.size()-1 func compute_state() -> void: # Met à jour une partie de l'état de la princesse