Bien, tengo un código para crear gravedad para mi personaje plataformero, el código es el siguiente:

[GML]
if (!place_meeting(x,y+vspeed,plataforma_normal))
{
    if (gravedad == 0)
        gravedad = cant_gravedad;
       
    vspeed += gravedad;
}

if (place_meeting(x,y+vspeed+1,plataforma_normal) && (vspeed >= 0))
{
    if (vspeed != 0)
        vspeed = 0;
   
    gravedad = 0;
   
    while (place_free(x,y+1))
        y += 1;
}
else
{
    if (place_meeting(x,y+vspeed+1,plataforma_normal) && (vspeed < 0))
        vspeed = 0;
}

if (!place_free(x,y))
    move_outside_solid(90,10);

if (vspeed > 12)
    vspeed = 12;
[/GML]
donde la variable gravedad esta definida en el personaje como una variable y cant_gravedad es una constante con valor unitario.

Luego los objetos que conforman las plataformas y las paredes son puramente sólidos sin contener ningún código de colisión.
Mi problema está en que a veces mi personaje se queda trabado por la parte de abajo y no sé porqué :-[

Gracias de antemano!

Solido, las colisiones con objetos sólidos son las más nefastas de Game Maker por que dan un montón de problemas y pocas soluciones a lo que buscamos, lo mejor y más recomendable es que pases todo el código que tienes a objetos no sólidos.

no se por que pero usar place_meeting me ha dado siempre en plataformas muchos dolores de cabeza, aunque no niego que los uso mucho. Proba con collision_line siempre resulta mejor.
aca no deberia ir el = (vspeed >= 0) deberia ir si el = o lo bajas a -1.
Atentamente.-
Elvis Kelley
Mi Manual.
Mi canal de Youtube Youtube click aqui
Video tutoriales Game maker

Como te dijeron mas arriba, te conviene dejar de usar sólidos. Yo desde que comencé a usar place_meeting no tuve un solo problema, cuando usaba sólidos era un dolor de cabeza. Lo que mencionas de que el personaje se traba en el suelo me pasaba a cada rato, asi que nunca mas  XD