Buenas Tardes, he estado probando varios codigos de colisiones perfectas(y uno me gusto mas que los demas) y quise juntarlo con un codigo de slopes que me funciono con otro, pero con este solamente funciona bajando los lopes y no subiendo el codigo es este:
//Bucle para colisiones perfectas en X
repeat(abs(xvel))
{
slope = 0;
while(!place_free(x, y - slope) && slope <= abs(1 * xvel)) { slope += 1; }
if (!place_free(x + sign(xvel), y - slope)) { break; }
else
{
y -= slope;
}
x += sign(xvel);
//Bajar slopes
if place_free(x, y) && yvel >= 0 && !place_free(x, y + 2 + abs(xvel))
{
while (place_free(x, y + 1))
{
y += 1;
}
}
}
//Bucle para colisiones perfectas en Y
repeat(abs(yvel))
{
if (!place_free(x, y + sign(yvel)))
{
if (yvel >= 0) { saltos = 0; }
break;
}
y += sign(yvel);
}
EDITO: Ya lo solucione, modifique esta parte:
slope = 0;
while(!place_free(x + xvel, y - slope) && slope <= abs(1 * xvel / 2)) { slope += 1; }