freinage: le personnage ne glisse plus
Dans un cas particulier où un saut emmenant la tête du personnage sur un pan incliné lui donnait une vélocité en x différente de zéro et qu'aucune command du joueur n'était envoyé via le controleur alors, la princesse glissait à l'infi et l'au delà (surement même un peu plus). Il en va donc de sa survie et de la santé mentale du joueur de limiter ces comportements ératiques et qui semblent tout bien d'être une fonctionalité pour certains. Je m'égare, je m'égare! En attendant l'écureil, la princesse freinera. voilà.
This commit is contained in:
17
princesse.gd
17
princesse.gd
@@ -100,6 +100,23 @@ func walk(direction:int) -> float:
|
|||||||
walking_step = min(walking_step, X_SPEED_DECEL.size() - 1)
|
walking_step = min(walking_step, X_SPEED_DECEL.size() - 1)
|
||||||
init_decel = false
|
init_decel = false
|
||||||
|
|
||||||
|
# dans le cas où le personnage est propulsé par une force extérieure et
|
||||||
|
# qu'il n'y a pas d'input du joueur pour permettre au personnage de ralentir
|
||||||
|
# il va bien falloir s'y coller, sinon, il va glisser indéfiniment.
|
||||||
|
var abs_v_x = abs(velocity.x)
|
||||||
|
if abs_v_x != 0 and walking_step == -1:
|
||||||
|
# trouver l'indice le plus proche de la vitesse courante
|
||||||
|
for index in range(0, X_SPEED_DECEL.size()-1):
|
||||||
|
var speed_i = table[walking_step] * WALKING_SPEED
|
||||||
|
var speed_i1 = table[walking_step+1] * WALKING_SPEED
|
||||||
|
# lorsque l'on a trouvé l'indice le bon endroit dans le tableau, alors
|
||||||
|
# on renvoie l'indice trouvé
|
||||||
|
if abs_v_x > speed_i and abs_v_x <= speed_i1:
|
||||||
|
walking_step = index+1
|
||||||
|
# si rien n'est trouvé, alors on initialise l'indice au maximum possible
|
||||||
|
if walking_step == -1:
|
||||||
|
walking_step = X_SPEED_DECEL.size() - 1
|
||||||
|
|
||||||
# Si le compteur d'incrément est supérieur ou égal à zéro, c'est qu'il
|
# Si le compteur d'incrément est supérieur ou égal à zéro, c'est qu'il
|
||||||
# faut bouger, donc il est nécéssaire en premier temps de récupérer la vitesse
|
# faut bouger, donc il est nécéssaire en premier temps de récupérer la vitesse
|
||||||
# à l'indice courant. Puis si le joueur ne veut plus accélérer, alors, appliquer
|
# à l'indice courant. Puis si le joueur ne veut plus accélérer, alors, appliquer
|
||||||
|
|||||||
Reference in New Issue
Block a user