princesse/prout: correction du dash

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.
This commit is contained in:
Thomas Lavocat
2023-05-01 08:47:30 +02:00
parent febf62053e
commit c013f1f8ad

View File

@@ -267,14 +267,8 @@ func dash() -> void:
if dash_step >= 0: if dash_step >= 0:
dash_step -= 1 dash_step -= 1
var doubley = 1 velocity.y = DASH_SPEED_TABLE[dash_step] * DASH_SPEED * dash_direction_y
var doublex = 1 velocity.x = DASH_SPEED_TABLE[dash_step] * DASH_SPEED * dash_direction_x
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
else: else:
cancel_dash() cancel_dash()
@@ -386,22 +380,31 @@ func read_input() -> void:
Input.start_joy_vibration(0, 1, 0.5, 0.2) Input.start_joy_vibration(0, 1, 0.5, 0.2)
available_dashs -=1 available_dashs -=1
dashing = true dashing = true
dash_step = DASH_SPEED_TABLE.size()-1
var axis_x = Input.get_axis( var axis_x = Input.get_axis(
"move_left" + action_suffix, "move_left" + action_suffix,
"move_right" + 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 not is_zero_approx(axis_x):
if axis_x < 0: if axis_x < 0:
dash_direction_x = -1 dash_direction_x = -1
else: else:
dash_direction_x = 1 dash_direction_x = 1
else: else:
dash_direction_x = 0 # Si le joueur tient le mur, alors, il ne faut pas dasher dans
var axis_y = Input.get_axis( # dans le mur en cas de dash
"move_up" + action_suffix, if grab_wall:
"move_down" + action_suffix 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 not is_zero_approx(axis_y):
if axis_y < 0: if axis_y < 0:
dash_direction_y = -1 dash_direction_y = -1
@@ -409,7 +412,12 @@ func read_input() -> void:
dash_direction_y = 1 dash_direction_y = 1
else: else:
dash_direction_y = 0 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: func compute_state() -> void:
# Met à jour une partie de l'état de la princesse # Met à jour une partie de l'état de la princesse