From 7113c3bedbe48341507444bd28f1e832101eb2a0 Mon Sep 17 00:00:00 2001 From: Xander Swan <[hidden email]> Date: Fri, 2 Jan 2026 22:16:57 -0500 Subject: Double jump --- src/player.odin | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src/player.odin') diff --git a/src/player.odin b/src/player.odin index 5c001da..149e1ce 100644 --- a/src/player.odin +++ b/src/player.odin @@ -12,8 +12,9 @@ import "tiled" PLAYER_SPEED :: 100 PLAYER_ACCEL :: 10 PLAYER_JUMP_FORCE :: 350 +PLAYER_DOUBLE_JUMP_FORCE :: 250 PLAYER_JUMP_BUFFERING :: 0.07 -PLAYER_COYOTE_TIME :: 0.05 +PLAYER_COYOTE_TIME :: 0.06 PLAYER_JUMP_RELEASE_CUT :: -100 PLAYER_DASH_SPEED :: 500 @@ -38,7 +39,10 @@ player: struct { dash_timer: f32, state: Player_State, + outside_room: bool, + + has_double_jumped: bool, } init_player :: proc() { @@ -109,12 +113,21 @@ default_state :: proc(dt: f32) { if .DOWN in body.collisions { player.coyote_time = PLAYER_COYOTE_TIME + player.has_double_jumped = false } - if player.jump_buffer > 0 && player.coyote_time > 0 { - player.jump_buffer = 0 - player.coyote_time = 0 - body.vel.y = -PLAYER_JUMP_FORCE + if player.jump_buffer > 0 { + if player.coyote_time > 0 { + body.vel.y = -PLAYER_JUMP_FORCE + + player.jump_buffer = 0 + player.coyote_time = 0 + } else if !player.has_double_jumped { + body.vel.y = -PLAYER_DOUBLE_JUMP_FORCE + player.has_double_jumped = true + + player.jump_buffer = 0 + } } if .DOWN not_in body.collisions \ -- cgit v1.3-2-g0d8e