como puedo hacer que mi personaje al saltar atraviese una plataforma desde abajo, pero cuando este sobre ella se vuelva solida (tipo mario.bros)
gracias

tienes que checar la collision solamente cuando el sprite va callendo, puedes poner un punto en la parte baja del sprite, para que al caer estes checando si hay collision de este punto y la plataforma, para esto Tambien vas a necesitar algun estado como:  "CALLENDO", y cuando caes en la plataforma, cambias el estado a IDLE, PARADO, etc, etc.
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

El método depende de cómo están programdos los movimientos y el sistema de colisiones.
He visto una forma sencilla de programarlo; si la posición "y" del bloque es mayor a la posición "y" del player, solid = true, en caso contario solid = false.

Hace unas horas programé un plataformero con plataformas atravesables. Este es el código que utilicé
[gml]
if (vy > 0){//velocidad vertical positiva
   with (obBloqueUnaVia) {
      //si los pies del personaje estaban sobre el bloque
      if (other.yPrev + other.boxD <= y)
      if block_meeting(other.id) {
         other.y = y - other.boxD; //desplazar personaje hacia arriba
         other.piso = true;
         other.saltando = false;
         other.vy = 0;
      }
   }
}
[/gml]
Utilizo variables de colisión que reemplazan a las variables predefinidas de GMS, para tener colisiones más precisas. El problema de GMS es que utiliza cajas de colisiones con valores redondeados.

Muestra el código que utilizas, para ver cómo lo podemos adaptar.

este codigo va en el evento step del jugador,  si deseas que el personaje no pueda bajar estando arriba solo quita esta parte "or obj_player.key_down "


with obj_platform
{
    if other.bbox_bottom  >= bbox_bottom or obj_player.key_down
    {
        mask_index = -1;
     
    }
    else
   
    {
        if other.vsp >= 0
        {
       
            mask_index = spr_platform;
        }
    }
}

Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!