added jump buffer
This commit is contained in:
parent
96c5bde897
commit
01f24d5f6b
1 changed files with 17 additions and 8 deletions
|
@ -5,6 +5,7 @@ extends CharacterBody2D
|
||||||
var jump_count = 1
|
var jump_count = 1
|
||||||
@export var jump_strength = 100
|
@export var jump_strength = 100
|
||||||
var is_touching_floor : bool = true
|
var is_touching_floor : bool = true
|
||||||
|
var jump_buffer_timer : float
|
||||||
var coyote_timer : float = 0.2 # 200 millisecond buffer
|
var coyote_timer : float = 0.2 # 200 millisecond buffer
|
||||||
var input_direction = 0 #To keep track of which direction we where moving in last frame
|
var input_direction = 0 #To keep track of which direction we where moving in last frame
|
||||||
|
|
||||||
|
@ -19,7 +20,7 @@ func get_input(delta):
|
||||||
input_direction = -1
|
input_direction = -1
|
||||||
elif right:
|
elif right:
|
||||||
input_direction = 1
|
input_direction = 1
|
||||||
else :
|
else:
|
||||||
input_direction = 0
|
input_direction = 0
|
||||||
|
|
||||||
# This line updates the player's velocity
|
# This line updates the player's velocity
|
||||||
|
@ -30,24 +31,32 @@ func get_input(delta):
|
||||||
is_touching_floor = true
|
is_touching_floor = true
|
||||||
jump_count = 1
|
jump_count = 1
|
||||||
coyote_timer = 0.2
|
coyote_timer = 0.2
|
||||||
|
if jump_buffer_timer > 0:
|
||||||
|
Jump()
|
||||||
|
|
||||||
if not is_on_floor():
|
if not is_on_floor():
|
||||||
|
if jump_buffer_timer > 0:
|
||||||
|
jump_buffer_timer -= delta
|
||||||
if coyote_timer > 0.0:
|
if coyote_timer > 0.0:
|
||||||
coyote_timer -= delta
|
coyote_timer -= delta
|
||||||
else:
|
else:
|
||||||
jump_count = 0
|
jump_count = 0
|
||||||
|
|
||||||
if Input.is_action_just_pressed("player_jump") and jump_count > 0:
|
if Input.is_action_just_pressed("player_jump"):
|
||||||
velocity.y = -1 * jump_strength
|
if jump_count > 0:
|
||||||
jump_count = 0
|
Jump()
|
||||||
is_touching_floor = false
|
else:
|
||||||
|
jump_buffer_timer = 0.2 # set a timer to jump again once the player has reached the ground, provided the jump is is still being held down
|
||||||
elif Input.is_action_pressed("player_jump"): #Fall less fast if we keep holding the button
|
elif Input.is_action_pressed("player_jump"): #Fall less fast if we keep holding the button
|
||||||
velocity.y += -1 * 25
|
velocity.y += -1 * 25
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
get_input(delta)
|
get_input(delta)
|
||||||
velocity.y += gravity
|
velocity.y += gravity
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
print(jump_count)
|
# print(jump_count) # Uncomment for debugging
|
||||||
|
|
||||||
|
func Jump():
|
||||||
|
velocity.y = -1 * jump_strength
|
||||||
|
jump_count = 0
|
||||||
|
is_touching_floor = false
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue