Hay te resolví tu problema, pruebalo y me comentas que tal va :).
Cambie lo siguiente en tus dos players, ademas le quite lo del solid.
Te faltaba validar que dejara de moverse si choca con el otro objeto player, agregándole !place_meeting(x,y-16,obj_RedPlayer) se arreglo.
Para el player Green le agregue esto en el codigo anterior: !place_meeting(x,y-16,obj_RedPlayer).
Para el player Red le agregue esto en el codigo anterior: !place_meeting(x,y-16,obj_GreenPlayer).
Cambie lo siguiente en tus dos players, ademas le quite lo del solid.
Código [Seleccionar]
switch lad
{
case d_Up:
{
if(((y-16)>0) and !place_meeting(x,y-16,obj_RedPlayer)){y -=16};break;
}
case d_Down:
{
if(((y+16)< room_height) and !place_meeting(x,y+16,obj_RedPlayer)){y +=16};break;
}
case d_Left:
{
if(((x -16)> 0) and !place_meeting(x-16,y,obj_RedPlayer)){x -=16} ;break;
}
case d_Right:
{
if(((x+16)< room_width) and !place_meeting(x+16,y,obj_RedPlayer)){x +=16} ;break;
}
}
Te faltaba validar que dejara de moverse si choca con el otro objeto player, agregándole !place_meeting(x,y-16,obj_RedPlayer) se arreglo.
Para el player Green le agregue esto en el codigo anterior: !place_meeting(x,y-16,obj_RedPlayer).
Para el player Red le agregue esto en el codigo anterior: !place_meeting(x,y-16,obj_GreenPlayer).