Fixup dashing

master
En Yi 2020-02-21 21:59:24 +08:00
parent 7eca2f3c16
commit d9544bc441
2 changed files with 22 additions and 10 deletions

View File

@ -6,7 +6,7 @@
#define RUN_INIT_SPD 230
#define JUMP_SPD 500
#define GRAV 1200
#define DASH_SPD 600
#define DASH_SPD 650
static bool allow_move = true;
static bool allow_friction = true;
@ -22,7 +22,10 @@ static Vector2 dash_vec = (Vector2){0.0, 0.0};
const unsigned int run_start_frames = 10;
const unsigned int jump_squat_frames = 4;
const unsigned int land_lag_frames = 6;
const unsigned int dash_time_frames = 5;
const unsigned int dash_time_frames = 6;
static unsigned int afterimage_fcounter = 10;
const unsigned int afterimage_frames = 10;
unsigned int PLAYER_SIZE = 30;
@ -187,17 +190,18 @@ void player_input_check(struct player_obj *player){
break;
case DASHING:
create_afterimage(player);
player->kinematic.velocity.x = dash_vec.x;
player->kinematic.velocity.y = dash_vec.y;
++frame_counter;
if (frame_counter > dash_time_frames){
dash_count = 1;
player->kinematic.velocity.x *= 0.6;
player->kinematic.velocity.y *= 0.6;
if (!place_meeting(&player->kinematic, (Vector2){0,1})){
player->state = JUMPING;
}
else{
player->state = RUNNING;
player->state = FALLING;
dash_count = 1;
}
//allow_friction = true;
}
@ -209,6 +213,11 @@ void player_input_check(struct player_obj *player){
// Set the hitbox reductions
adjust_hitbox(&player->kinematic);
if (afterimage_fcounter < afterimage_frames){
if(afterimage_fcounter%2 == 0)
create_afterimage(player);
++afterimage_fcounter;
}
if (IsKeyPressed(JUMP) && jumps > 0){
player->state = JUMP_SQUAT;
@ -243,7 +252,7 @@ void player_input_check(struct player_obj *player){
dash_vec.y = dash_vec.y * DASH_SPD/m;
//allow_friction = false;
--dash_count;
frame_counter=0;
frame_counter=0;afterimage_fcounter=0;
player->state = DASHING;
}
@ -252,7 +261,10 @@ void player_input_check(struct player_obj *player){
jumps = 0;
on_ground = false;
allow_friction = true;
player->state = FALLING;
if (player->state != DASHING)
player->state = FALLING;
else
player->state = JUMPING;
}
if (allow_friction == true)
@ -264,7 +276,7 @@ void player_input_check(struct player_obj *player){
//if (player->state != DASHING && !place_meeting(&player->kinematic, (Vector2){0,1}) ){
if (!place_meeting(&player->kinematic, (Vector2){0,1}) ){
accel.y = GRAV;
if(player->kinematic.velocity.y > 0)
if(player->state != DASHING && player->kinematic.velocity.y > 0)
player->state = FALLING;
}

View File

@ -150,14 +150,14 @@ void draw_afterimages(struct player_obj *player){
translate_mat[12] = current->pos.x;
translate_mat[13] = current->pos.y;
rlMultMatrixf(translate_mat);
Color c = (Color){ 0, 0, 0, 255 * current->opacity};
Color c = (Color){ 40, 0, 180, 255 * current->opacity};
for(i=0;i<BEZIER_POINTS;++i){
DrawTriangle(current->top_vertices[i], (Vector2){0,0}, current->top_vertices[i+1], c);
DrawTriangle(current->bottom_vertices[i], (Vector2){0,0}, current->bottom_vertices[i+1], c);
DrawTriangle(current->left_vertices[i], (Vector2){0,0}, current->left_vertices[i+1], c);
DrawTriangle(current->right_vertices[i], (Vector2){0,0}, current->right_vertices[i+1], c);
}
current->opacity -= 0.1;
current->opacity -= 0.2;
rlPopMatrix();
current = current->next;
}