diff --git a/princesse.gd b/princesse.gd index de12697..de40686 100644 --- a/princesse.gd +++ b/princesse.gd @@ -31,14 +31,15 @@ var DASH_SPEED = WALKING_SPEED * 2 @export var X_SPEED_DECEL = [0, 0.1, 0.6, 1] @export var FALL_SPEED_TABLE = [0, 0.1, 0.15, 0.2, 0.3, 0.6, 0.9, 1] @export var JUMP_SPEED_TABLE = [0, 0.1, 0.2, 0.5, 0.6, 0.7, 0.8, 0.9, 1] -@export var KICK_SPEED_TABLE = [0.5, 0.6, 0.7, 0.8, 0.9, 1, 1, 1, 1, 1, 1, 1, 1] +@export var KICK_SPEED_TABLE = [0.5, 0.6, 0.7, 0.8, 0.9, 1.1] @export var DASH_SPEED_TABLE = [0.5, 0.6, 0.7, 0.8, 0.9, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3] # Nombre d'incrément à rajouter lorsque la touche de saut est maintenue @export var JUMPING_COUNTER_REFILL = 2 # Tous les combien d'incréments rajouter un refill sur le compteur @export var JUMPING_KEY_COUNTER_THRESHOLD = 3 -@export var KICK_JUMP_LIMITER = 0.65 +@export var KICK_JUMP_LIMITER = 0.75 +@export var KICK_REFILL_MAX_AMOUNT = 10 # Nombre de frames coyote durant lesquelle le joueur peut encore sauter # sans encore être au sol @@ -87,6 +88,7 @@ var collide_ground_far_detect = false # est-ce que les collisioneurs du sol sont var kicking : bool = false var kick_step : int = -1 var kick_direction : int = 1 +var last_kick_key_counter : int = 0 # Coyote time var coyote_ground = [] @@ -313,17 +315,24 @@ func end_jump(): # termine le saut de Princesse jumping = false jumping_step = -1 - jump_key_counter = 0 func kick() -> void: # fait kicker la princesse if not kicking or dashing: return + var substract := 0 + if not is_on_ceiling() and jump_key_counter > last_kick_key_counter and jump_key_counter < KICK_REFILL_MAX_AMOUNT : + last_kick_key_counter = jump_key_counter + kick_step = KICK_SPEED_TABLE.size() -1 + substract = (last_kick_key_counter +1) /20 + else: + last_kick_key_counter = 1000 + if kick_step > 0: kick_step -= 1 - velocity.y = KICK_SPEED_TABLE[kick_step] * JUMPING_SPEED * -1 * KICK_JUMP_LIMITER - velocity.x = KICK_SPEED_TABLE[kick_step] * WALKING_SPEED * kick_direction + velocity.y = (KICK_SPEED_TABLE[kick_step] - substract) * JUMPING_SPEED * -1 * KICK_JUMP_LIMITER + velocity.x = (KICK_SPEED_TABLE[kick_step] - substract) * WALKING_SPEED * kick_direction else: cancel_kick() @@ -411,6 +420,7 @@ func read_input() -> void: if not kicking: kicking=true coyote_grab = [false] + last_kick_key_counter = 0 kick_step = KICK_SPEED_TABLE.size()-1 if pressing_wall_left: kick_direction = 1 @@ -422,11 +432,10 @@ func read_input() -> void: if not jumping: jumping = true jumping_step = JUMP_SPEED_TABLE.size()-1 - jump_key_counter = 0 + # Si il continue d'appuyer, lui rallonger son saut if Input.is_action_pressed("jump" + action_suffix): - if jumping: - jump_key_counter += 1 + jump_key_counter += 1 else: jump_key_counter = 0 diff --git a/princesse.tscn b/princesse.tscn index cf69d86..a8cfe89 100644 --- a/princesse.tscn +++ b/princesse.tscn @@ -432,7 +432,6 @@ slide_on_ceiling = false floor_constant_speed = true script = ExtResource("1_dkp7s") JUMPING_SPEED = 230 -KICK_JUMP_LIMITER = 0.75 COYOTE_LENGTH = 7 COYOTE_GRAB_LENGTH = 20 WALK_INCR_AIR = 4