jump buffer & jump grace
This commit is contained in:
parent
77a5ea75f0
commit
a1858119be
|
@ -13,3 +13,5 @@
|
|||
#define GRAVITY 0.3f
|
||||
#define JUMP_SPEED -6.0f
|
||||
#define JUMP_BREAK 3
|
||||
#define JUMP_BUFFER 12
|
||||
#define JUMP_GRACE 6
|
||||
|
|
|
@ -7,6 +7,7 @@ struct Player {
|
|||
struct Vec pos;
|
||||
struct VecF spd, rem;
|
||||
enum AirState air_state;
|
||||
int jump_buffer, jump_grace;
|
||||
};
|
||||
|
||||
void player_init(struct Player *);
|
||||
|
|
16
src/player.c
16
src/player.c
|
@ -19,6 +19,8 @@ player_init(struct Player *p)
|
|||
p->pos.y = TILE_SIZE;
|
||||
reset_speed(p, 1, 1);
|
||||
p->air_state = AS_NEUTRAL;
|
||||
p->jump_buffer = 0;
|
||||
p->jump_grace = 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -57,10 +59,22 @@ player_update(struct Player *p)
|
|||
break;
|
||||
}
|
||||
|
||||
/* jump buffer */
|
||||
if (kp_jump)
|
||||
p->jump_buffer = JUMP_BUFFER;
|
||||
else if (p->jump_buffer)
|
||||
p->jump_buffer--;
|
||||
/* jump grace */
|
||||
if (on_ground)
|
||||
p->jump_grace = JUMP_GRACE;
|
||||
else if (p->jump_grace)
|
||||
p->jump_grace--;
|
||||
/* jump */
|
||||
if (on_ground && kp_jump) {
|
||||
if (p->jump_grace && p->jump_buffer && k_jump) {
|
||||
p->spd.y = JUMP_SPEED;
|
||||
p->air_state = AS_RISING;
|
||||
p->jump_buffer = 0;
|
||||
p->jump_grace = 0;
|
||||
}
|
||||
|
||||
player_move(p, update_rem(p));
|
||||
|
|
Loading…
Reference in New Issue