sweep
Member
Hope you can help,it's probably an easy fix but I can't find a solution. My player isn't switching to the correct sprite when I am climbing. The code is below. The player changes to its falling sprite while going up or down a ladder. Is the jumping and falling code overwriting the climbing ?
ANIMATION
image_speed = 1;
if (hspd !=0) image_xscale = sign(hspd);
if (!onground)
{
if (onwall != 0)
{
sprite_index = spr_player_wall;
image_xscale = onwall;
var _side = bbox_left;
if (onwall == 1) _side = bbox_right;
dust++
if ((dust > 2) && (vspd > 0)) with (instance_create_layer(_side,bbox_top,"player",obj_dust))
{
other.dust = 0;
hspeed = -other.onwall *0.5;
}
}
else
{
dust = 0;
sprite_index = spr_player_air;
image_speed = 0;
image_index = (vspd > 0);
}
}
else
{
if (hspd != 0 ) sprite_index = spr_player_run; else sprite_index = spr_player;
}
STATE CHANGE
if (key_up || key_down)
{
if (place_meeting(x,y,obj_climb)) ladder = true;
}
if (ladder)
{
scr_onladder();
}
ONLADDER script
function scr_onladder()
{
if (ladder)
{
vspd = 0;
if (key_up)
{
sprite_index = spr_player_climb;
image_index = 0;
image_speed = 1;
vspd = -2;
}
if (key_down)
{
sprite_index = spr_player_climb;
image_index = 0;
image_speed = 1;
vspd = 2
}
if (!place_meeting(x,y,obj_climb)) ladder = false;
if (key_jump) ladder = false;
}
}
ANIMATION
image_speed = 1;
if (hspd !=0) image_xscale = sign(hspd);
if (!onground)
{
if (onwall != 0)
{
sprite_index = spr_player_wall;
image_xscale = onwall;
var _side = bbox_left;
if (onwall == 1) _side = bbox_right;
dust++
if ((dust > 2) && (vspd > 0)) with (instance_create_layer(_side,bbox_top,"player",obj_dust))
{
other.dust = 0;
hspeed = -other.onwall *0.5;
}
}
else
{
dust = 0;
sprite_index = spr_player_air;
image_speed = 0;
image_index = (vspd > 0);
}
}
else
{
if (hspd != 0 ) sprite_index = spr_player_run; else sprite_index = spr_player;
}
STATE CHANGE
if (key_up || key_down)
{
if (place_meeting(x,y,obj_climb)) ladder = true;
}
if (ladder)
{
scr_onladder();
}
ONLADDER script
function scr_onladder()
{
if (ladder)
{
vspd = 0;
if (key_up)
{
sprite_index = spr_player_climb;
image_index = 0;
image_speed = 1;
vspd = -2;
}
if (key_down)
{
sprite_index = spr_player_climb;
image_index = 0;
image_speed = 1;
vspd = 2
}
if (!place_meeting(x,y,obj_climb)) ladder = false;
if (key_jump) ladder = false;
}
}