That looks OK.
What's the full code in the Step Event?
step event
/// Displacement
if distance_to_object(obj_player) < 200{
VelocidadHorizontal = 0;
}
// Horizontal colision
repeat (abs(VelocidadHorizontal)){
// cuesta arriba
if (place_meeting(x + sign(VelocidadHorizontal),y, obj_roca))&& place_meeting(x+ sign(VelocidadHorizontal),y -1, obj_roca)&& !place_meeting(x+ sign(VelocidadHorizontal),y -2, obj_roca) y -= 2;
if (place_meeting(x + sign(VelocidadHorizontal),y, obj_roca))&& place_meeting(x+ sign(VelocidadHorizontal),y -1, obj_roca)&& !place_meeting(x+ sign(VelocidadHorizontal),y -3, obj_roca) y -= 3;
if (place_meeting(x + sign(VelocidadHorizontal),y, obj_roca))&& place_meeting(x+ sign(VelocidadHorizontal),y -1, obj_roca)&& !place_meeting(x+ sign(VelocidadHorizontal),y -4, obj_roca) y -= 4;
if (place_meeting(x + sign(VelocidadHorizontal),y, obj_roca))&& place_meeting(x+ sign(VelocidadHorizontal),y -1, obj_roca)&& !place_meeting(x+ sign(VelocidadHorizontal),y -1, obj_roca) y -= 1;
else if (place_meeting(x + sign(VelocidadHorizontal),y, obj_roca))&& !place_meeting(x+ sign(VelocidadHorizontal),y -1, obj_roca) y--;
//cuesta abajo
if !place_meeting(x+ sign(VelocidadHorizontal), y, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +1, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +2, obj_roca)&& place_meeting(x + sign(VelocidadHorizontal),y + 3, obj_roca) y += 2;
if !place_meeting(x+ sign(VelocidadHorizontal), y, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +2, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +3, obj_roca)&& place_meeting(x + sign(VelocidadHorizontal),y + 4, obj_roca) y += 3;
if !place_meeting(x+ sign(VelocidadHorizontal), y, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +3, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +4, obj_roca)&& place_meeting(x + sign(VelocidadHorizontal),y + 5, obj_roca) y += 4;
if !place_meeting(x+ sign(VelocidadHorizontal), y, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +1, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +2, obj_roca)&& place_meeting(x + sign(VelocidadHorizontal),y + 3, obj_roca) y += 1;
else if !place_meeting(x+ sign(VelocidadHorizontal), y, obj_roca) && !place_meeting(x + sign(VelocidadHorizontal), y +1, obj_roca) && place_meeting(x + sign(VelocidadHorizontal),y +2, obj_roca) y++;
if (!place_meeting(x + sign (VelocidadHorizontal), y, obj_roca))
{
x += sign (VelocidadHorizontal);
}
else
{
VelocidadHorizontal = 0;
Dir *= -1;
break;
}
}
// ====================
if Ataca = false{
if Camina = false
{
if (obj_player.x)> x
{
sprite_index = spr_mercenary_IdleR;
}
else
{
sprite_index = spr_mercenary_IdleL;
}
}
else
{
if VelocidadHorizontal > 0
{
VelocidadHorizontal = Dir * MoveSpeed ;
VelocidadVertical += Grav ;
sprite_index = spr_MercenaryP;
image_speed = 1;
}
else
{
sprite_index = spr_MercenaryP2;
image_speed = 1;
}
}
}
// acciones con el jugador-------------
if distance_to_object(obj_player) < 200
{
//mp_potential_step_object(objetP.x,y,2.5,objetP);
if Estado = 0{
Estado = 1;
alarm[0] = 25;
}
}
// gravedad -----------
//if place_meeting(x,y +1, obj_roca)
if place_free(x,y +1)
{
Grav = 1;
}
else
{
Grav = 0;
}