Windows Help with walk animation cycle & directions stuck

R

rustymiester

Guest
Been following a video tutorial on youtube with FriendlyCosmonaut creating a character movement and collision with animations but my character is forever facing up and doing an animation walk cycle, i press key left or right and it wont change. why is this? i tried following the tutorial closely and repeated a few times to find mistakes but cant find why also my shadow is offset even though i place x,y.



Code:
///obj_player create event

///@description
w_spd = 1;
n_spd = 2;
r_spd = 3;

x_frame = 1;
y_frame = 8;

x_offset = sprite_get_xoffset(mask_index);
y_offset = sprite_get_yoffset(mask_index);

spr_base = male_1;
spr_torso = male_torso_shirt_white;
spr_legs = male_legs_pants_teal;
spr_hair = male_hair_messy_raven;
spr_feet = male_feet_shoes_black;
spr_shadow = spr_character_shadow;

facing = 0;
Code:
///obj_player step event

//UPDATE INPUT
input_left    = keyboard_check(vk_left);
input_right    = keyboard_check(vk_right);
input_up    = keyboard_check(vk_up);
input_down    = keyboard_check(vk_down);
input_walk = keyboard_check(vk_control);
input_run = keyboard_check(vk_shift);


//ALTER SPEED
if(input_walk or input_run){
    spd = abs((input_walk*w_spd) - (input_run*r_spd));
} else {
    spd = n_spd;
}

//RESET MOVE VARIABLES
moveX = 0;
moveY = 0;

//INTENDED MOVEMENT

moveY = (input_down - input_up) * spd;
if(moveY == 0){ moveX = (input_right - input_left) * spd; }

//GET DIRECTION PLAYER IS FACING
if(moveX != 0){
    switch(sign(moveX)){
        case 1: facing = dir.right; break;
        case -1: facing = dir.left; break;
    }
} else if(moveY != 0){
    switch(sign(moveY)){
        case 1: facing = dir.down; break;
        case -1: facing = dir.up; break;
    }
} else {
    facing = -1;
}


//COLLISON
//HORIZONTOL
if(moveX !=0){
    if(place_meeting(x+moveX, y, obj_collision)){
        repeat(abs(moveX)){
        if(!place_meeting(x+sign(moveX), y, obj_collision)){ x += sign(moveX);  }
             else { break; }
        }
        moveX = 0;
    }
}
    //VERTICAL
    if(moveY !=0){
    if(place_meeting(x, y+moveY, obj_collision)){
        repeat(abs(moveY)){
        if(!place_meeting(x, y+sign(moveY), obj_collision)){ y += sign(moveY); }
             else { break; }
        }
        moveY = 0;
    }
}

//OBJECTS
var inst = instance_place(x,y,obj_transition);
if(inst != noone and facing == inst.playerFacingBefore){
    with(game){
        if(!doTransition){
        spawnRoom    = inst.targetRoom;
        spawnX        = inst.targetX;
        spawnY        = inst.targetY;
        spawnPlayerFacing = inst.playerFacingAfter;
        doTransition = true;
        }
    }
}


//APPLY MOVEMENT
x += moveX;
y += moveY;
Code:
///obj_player draw event

/// @description
var anim_length = 9;
var frame_size = 64;
var anim_speed = 12;

var xx = x-x_offset;
var yy = y-y_offset;

//DRAW SPRITE SHADOW
if(spr_shadow != 1) draw_sprite(spr_shadow, 0, xx,yy); //sprite_image, image no. , x, y;

//DRAW CHARACTER BASE
if(spr_base != -1) draw_sprite_part(spr_base, 0, floor(x_frame)*frame_size, y_frame*frame_size, frame_size, frame_size, xx,yy);

//DRAW CHARACTER FEET
if(spr_feet != -1) draw_sprite_part(spr_feet, 0, floor(x_frame)*frame_size, y_frame*frame_size, frame_size, frame_size, xx,yy);

//DRAW CHARACTER LEGS
if(spr_legs != -1) draw_sprite_part(spr_legs, 0, floor(x_frame)*frame_size, y_frame*frame_size, frame_size, frame_size, xx,yy);

//DRAW CHARACTER SHIRT
if(spr_torso != -1) draw_sprite_part(spr_torso, 0, floor(x_frame)*frame_size, y_frame*frame_size, frame_size, frame_size, xx,yy);

//DRAW CHARACTER HAIR
if(spr_hair != -1) draw_sprite_part(spr_hair, 0, floor(x_frame)*frame_size, y_frame*frame_size, frame_size, frame_size, xx,yy);

//INCREMENT FRAME FOR ANIMATION
if(x_frame + (anim_speed/60) < anim_length) { x_frame += anim_speed/60; }
else                         { x_frame = 1; }
Code:
///game event Room Start
if(spawnRoom == -1) exit;
obj_player.x = spawnX;
obj_player.y = spawnY;
obj_player.facing = spawnPlayerFacing;

with (obj_player){
    switch(facing){
        case dir.left:    y_frame = 9;    break;
        case dir.right:    y_frame = 11;    break;
        case dir.up:    y_frame = 8;    break;
        case dir.down:    y_frame = 10;    break;
        case -1:        x_frame = 0;    break;
    }
}

Code:
///game draw gui event
randomize();
room_goto_next();

debug = false;

guiWidth = display_get_gui_width();
guiHeight = display_get_gui_height();

blackAlpha = 0;

spawnRoom = -1;
spawnX = 0;
spawnY = 0;
spawnPlayerFacing = -1;
doTransition = false;

enum dir {
    right = 0,
    up = 90,
    left = 180,
    down = 270,
}
hope that makes sense, cause i have no idea whats going on, let me know if you need anything else, hope someone can help!
 
Top