Hola a todos, vereis el objeto que controlo en mi juego puede salir de la room por la parte de arriba. Para arreglar esto he creado unos objetos invisibles en forma de cuadrados que al contactar con mi objeto le reduce la vspeed a 0. El objeto ya no sale de la room, el problema es que al chocar contra la pared el objeto no se puede mover horizontalmente.

El control del objeto es mediante step_towards_point(mouse_x,mouse_y).

Hola elemenda3.

Eso sucede porque el bloque que detiene el movimiento del personaje es sólido y se hace vspeed=0 en el evento de colisión con el bloque, y además el icono "Step towards point" no modifica la variable vspeed. Muchos de los programadores experimentados en GM recomiendan no usar bloques para rodear las rooms, porque eso baja el rendimiento. Mejor usa una condición para la coordenada "y" en el evento step (en vez del evento colisión):
[gml]
if( y < 8 ) y = 8;
[/gml]
Cambia el 8 por valor que necesites, y no olvides borrar los bloques que están como barrera.

creo que deberias dar mas datos para poder ayudarte como que tipo de juego es especificamente ya que no es lo mismo ser una bola que un personaje de plataformas, o que uno estilo zelda...