Febrero 09, 2013, 12:20:17 AM Ultima modificación: Febrero 09, 2013, 12:56:18 PM por Domenec
Nueva duda  :)

Quiero cambiar durante el salto uno bloque para que este se vuelva traspasable pero visible. Para ello si uso el instance_change, me cambia el personaje principal por dicho bloque. Supongo que el problema esta en que la instruccion la hago desde dentro del evento del personaje.
Yo solo quiero que me cambien un bloque solido por otro que no lo sea.
¿Donde debo poner la orden para que cambie dicha instancia?

edito:
¿Dicho de otra manera, como puedo atravesar una plataforma desde abajo y que me aguante por arriba?

Gracias

Lo único que se me ocurre ahora bien rápido es que comprobés la distancia desde abajo del objeto, si está por debajo usas este código:

obj_bloque.solid = false;

Cuando la distancia sea menor:

obj_bloque.solid = true;

Es lo único que se me ocurre que se puede hacer, donde obj_bloque es el bloque que tenes.

A la hora de colisionar con el bloque checas la velocidad vertical del personaje, si es menor a 0 (o sea si va para arriba) vuelves el bloque no sólido. Si la velocidad de mayor o igual a 0 haces que sea sólido y que el personaje deje de caer. Debes tener cuidado por si el personaje detiene su salto mientras está cruzando con el bloque :P

#3 Febrero 09, 2013, 10:04:10 AM Ultima modificación: Febrero 09, 2013, 10:15:56 AM por Domenec
Ok, ya veo que tendre que jugar con el tema de hacer el objeto solido o no, pero realmente si veo un problema con el tema de que a mitad de salto el jugador deje de presionar la tecla salto y se quede atorado en el bloque porque aun no lo habria cruzado del todo.

Cita de: Iros en Febrero 09, 2013, 04:50:41 AM
Lo único que se me ocurre ahora bien rápido es que comprobés la distancia desde abajo del objeto, si está por debajo usas este código:

obj_bloque.solid = false;

Cuando la distancia sea menor:

obj_bloque.solid = true;

Es lo único que se me ocurre que se puede hacer, donde obj_bloque es el bloque que tenes.

¿Que instruccion se usa en gml para chekear eso?

Bueno, al final gracias a vuestras ideas lo he solucionado... :)
he puesto este codigo:
Citarif (obj_player.y>y+1) {solid=0} else {solid=1}
dentro del objeto bloque solido traspasable y solucionado..  :D
Ademas he dejado como mascara una fina linea de 1 pixel horizontal para que no se me quede atrapado el personaje. De momento en las pruebas todo ok...