Marzo 20, 2014, 06:48:42 PM Ultima modificación: Marzo 20, 2014, 06:50:36 PM por darkanse
Buenas, estoy haciendo un juego que consiste en que mi personaje corre hacia la derecha, para ello lo mantengo quieto y lo que hago es que todos los objetos que hay empiecen moviendose a la izquierda, pero si al saltar el personaje toca una pared, en lugar de la pared empujarle fuera de la pantalla, es el personaje el que arrastra a la pared y se mantiene flotando. ¿como hago para que sea la pared completamente estatica y si el personaje la toca por un lateral es la pared la que lo arrastra? estoy usando el sprite "wall" que viene por defecto en game maker.

Gracias de antemano.

Se me ocurre que podría verificar si delante del personaje hay una pared, masomenos así:

[gml]
if (position_meeting(x+30,y,obj_pared))
   x = x - velocidad_de_la_pared;
[/gml]

entonces indica, que si adelante, aproximadamente una distancia de 30, hay una pared, entonces el jugador se mueve a la velocidad de la pared...



Esto funciona también tratándose de ser el suelo el mismo objeto que la pared? esque pensé en hacer el mismo sprite 2 objetos distintos, pared y suelo, peeeeero el problema erradica en las esquinas, que el mismo objeto debería ser suelo y pared y es principalmente el problema, que es donde mas suele chocarse el personaje, ya que es donde aterriza

mi recomendacion es que uses el mismo objeto tanto como para pared y suelo, un cuadrado simple de cualquier color y le desmarcas la casilla visible, luego le pones los graficos como tiles. y si emparentas todas las colisiones similares a este objeto te ahorraras mucho trabajo

Cita de: darkanse en Marzo 20, 2014, 07:27:43 PM
Esto funciona también tratándose de ser el suelo el mismo objeto que la pared? esque pensé en hacer el mismo sprite 2 objetos distintos, pared y suelo, peeeeero el problema erradica en las esquinas, que el mismo objeto debería ser suelo y pared y es principalmente el problema, que es donde mas suele chocarse el personaje, ya que es donde aterriza

La verificacion que di, teoricamente, solo funciona para cuando se choca desde la izquierda con el objeto "Obj_pared" en todo caso, si tuvieras otro objeto suelo, deberías hacer la verificacion correspondiente para el objeto suelo.
Ahora si ambos son los mismos y tienen un parent, entonces no haría falta.