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:
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