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:
25
princesse.gd
25
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 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 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 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]
|
@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
|
# Nombre d'incrément à rajouter lorsque la touche de saut est maintenue
|
||||||
@export var JUMPING_COUNTER_REFILL = 2
|
@export var JUMPING_COUNTER_REFILL = 2
|
||||||
# Tous les combien d'incréments rajouter un refill sur le compteur
|
# Tous les combien d'incréments rajouter un refill sur le compteur
|
||||||
@export var JUMPING_KEY_COUNTER_THRESHOLD = 3
|
@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
|
# Nombre de frames coyote durant lesquelle le joueur peut encore sauter
|
||||||
# sans encore être au sol
|
# 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 kicking : bool = false
|
||||||
var kick_step : int = -1
|
var kick_step : int = -1
|
||||||
var kick_direction : int = 1
|
var kick_direction : int = 1
|
||||||
|
var last_kick_key_counter : int = 0
|
||||||
|
|
||||||
# Coyote time
|
# Coyote time
|
||||||
var coyote_ground = []
|
var coyote_ground = []
|
||||||
@@ -313,17 +315,24 @@ func end_jump():
|
|||||||
# termine le saut de Princesse
|
# termine le saut de Princesse
|
||||||
jumping = false
|
jumping = false
|
||||||
jumping_step = -1
|
jumping_step = -1
|
||||||
jump_key_counter = 0
|
|
||||||
|
|
||||||
func kick() -> void:
|
func kick() -> void:
|
||||||
# fait kicker la princesse
|
# fait kicker la princesse
|
||||||
if not kicking or dashing:
|
if not kicking or dashing:
|
||||||
return
|
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:
|
if kick_step > 0:
|
||||||
kick_step -= 1
|
kick_step -= 1
|
||||||
velocity.y = KICK_SPEED_TABLE[kick_step] * JUMPING_SPEED * -1 * KICK_JUMP_LIMITER
|
velocity.y = (KICK_SPEED_TABLE[kick_step] - substract) * JUMPING_SPEED * -1 * KICK_JUMP_LIMITER
|
||||||
velocity.x = KICK_SPEED_TABLE[kick_step] * WALKING_SPEED * kick_direction
|
velocity.x = (KICK_SPEED_TABLE[kick_step] - substract) * WALKING_SPEED * kick_direction
|
||||||
else:
|
else:
|
||||||
cancel_kick()
|
cancel_kick()
|
||||||
|
|
||||||
@@ -411,6 +420,7 @@ func read_input() -> void:
|
|||||||
if not kicking:
|
if not kicking:
|
||||||
kicking=true
|
kicking=true
|
||||||
coyote_grab = [false]
|
coyote_grab = [false]
|
||||||
|
last_kick_key_counter = 0
|
||||||
kick_step = KICK_SPEED_TABLE.size()-1
|
kick_step = KICK_SPEED_TABLE.size()-1
|
||||||
if pressing_wall_left:
|
if pressing_wall_left:
|
||||||
kick_direction = 1
|
kick_direction = 1
|
||||||
@@ -422,11 +432,10 @@ func read_input() -> void:
|
|||||||
if not jumping:
|
if not jumping:
|
||||||
jumping = true
|
jumping = true
|
||||||
jumping_step = JUMP_SPEED_TABLE.size()-1
|
jumping_step = JUMP_SPEED_TABLE.size()-1
|
||||||
jump_key_counter = 0
|
|
||||||
# Si il continue d'appuyer, lui rallonger son saut
|
# Si il continue d'appuyer, lui rallonger son saut
|
||||||
if Input.is_action_pressed("jump" + action_suffix):
|
if Input.is_action_pressed("jump" + action_suffix):
|
||||||
if jumping:
|
jump_key_counter += 1
|
||||||
jump_key_counter += 1
|
|
||||||
else:
|
else:
|
||||||
jump_key_counter = 0
|
jump_key_counter = 0
|
||||||
|
|
||||||
|
|||||||
@@ -432,7 +432,6 @@ slide_on_ceiling = false
|
|||||||
floor_constant_speed = true
|
floor_constant_speed = true
|
||||||
script = ExtResource("1_dkp7s")
|
script = ExtResource("1_dkp7s")
|
||||||
JUMPING_SPEED = 230
|
JUMPING_SPEED = 230
|
||||||
KICK_JUMP_LIMITER = 0.75
|
|
||||||
COYOTE_LENGTH = 7
|
COYOTE_LENGTH = 7
|
||||||
COYOTE_GRAB_LENGTH = 20
|
COYOTE_GRAB_LENGTH = 20
|
||||||
WALK_INCR_AIR = 4
|
WALK_INCR_AIR = 4
|
||||||
|
|||||||
Reference in New Issue
Block a user