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 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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user