Septiembre 27, 2017, 01:09:55 AM Ultima modificación: Septiembre 27, 2017, 04:23:23 PM por MateG_
Resulta que hay veces en las que cuando mi personaje está cayendo y colisiona con el suelo se queda "flotando" un pixel más arriba, lo que hace que el bloque que se supone que debería caer cuando es pisado no caiga, aunque no es muy usual estaría bueno arreglarlo, si me pudiesen ayudar lo agradecería.

Código de gravedad:

if !place_meeting(x,y+1,objColision) and (numVSP < 20)
{
    numVSP += numGrav
}


Código de colisión vertical:

if place_meeting(x,y+numVSP,objColision)
{
    while !(place_meeting(x,y+sign(numVSP),objColision))
    {
        y += sign(numVSP)
    }
    numVSP = 0
}

if place_meeting(x,y+numVSP,objBloqueCaida)
{
    while !(place_meeting(x,y+sign(numVSP),objBloqueCaida))
    {
        y += sign(numVSP)
    }
    numVSP = 0
}


Vídeo del error:

https://www.youtube.com/watch?v=5mVqTnW1LnU

Desde ya GRACIAS!

Veo un tanto extraño tu código de movimiento vertical. Tal vez lo pusiste incompleto, porque no hay un código que haga caer al personaje  cuando no se ejecuta la primera condición. Intenta arreglarlo así:
[gml]
if(place_meeting(x, y+numVSP, objColision))
{
    while(!place_meeting(x, y+sign(numVSP), objColision))
    {
        y += sign(numVSP);
    }
    numVSP = 0;
}
else y += numVSP; //Esto es lo que le faltaba

numVSP += numGrav; //No necesitas comprobar antes de acelerar, de todas formas la velocidad se cancela cuando se toca el suelo.
[/gml]
Creo que así debería funcionar.
alaberga regué el café.

BA:STFW&RTFM