princesse/wall_kick: wall kick analogique

Plus on appuye, plus on va loin, et donc on peut moduler. Donc plus de
plaisir. Voilà voilou bisous bisous
This commit is contained in:
Thomas Lavocat
2023-06-09 17:33:39 +02:00
parent 4f9f8a081b
commit 9a696cb0dd
2 changed files with 17 additions and 9 deletions

View File

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