Hola!
Tengo un problemilla con mi pje ya que se queda pillado con la pared.
A grandes rasgos, estoy aumentando la velocidad en 1 por step cada vez que pulsas una dirección.
El problema es que a veces se queda pillado con el objeto lateral con el que colisiona para no salirse.
El problema, por ahora, lo tengo solucionado restandole (a la derecha) y sumandole (a la izquierda) el mod de 32 +4/-4.
El +4 se lo tuve que poner porque sino seguia atrancandose.
Tal como lo tengo ahora, se queda dando saltitos en los laterales y queda un poco... raro
Entiendo que se está colando porque al sumar la velocidad salta al medio de esos 32 pixeles de la barrera y se quedan colisionando todo el rato
Hay alguna forma de parar el pje al chocar o mandarlo a la posicion maxima por cada lado?
Un saludo!!
Primero crea el siguiente script:
Nombralo: move_to_contact_with
var dirn, max_dist, contact_obj, dx, dy;
dirn = argument0;
max_dist = argument1;
contact_obj = argument2;
if ( max_dist == 1 )
{
max_dist = 1000;
dx = lengthdir_x( 1, dirn );
dy = lengthdir_y( 1, dirn );
dist = 1;
}
while( dist <= max_dist )
{
if ( place_meeting( x+dx, y+dy, contact_obj ) == true )
{
return true;
x = x + dx;
y = y + dy;
dist = dist + 1;
}
return false;
Ahora en el evento colision con el objeto pared:
obj_jugador
Evento Colision obj_pared
x = xprevious;
y = yprevious;
move_to_contact_with( direction, -1, obj_pared );
hspeed = 0;
Se que requerira algunos ajustes adaptarlo a tu juego.
Te he adjuntado un ejemplo. Lo unico que debes tener en cuenta que yo creo un objeto parent de los que todos los tipos de pisos y paredes.
Muchas gracias!
No lo entiendo muy bien, porque estoy algo pez aun en codigo GML pero esta tarde intento implementarlo a ver si consigo ponerlo :)
Bueno si se te hace complicado entonces pon tu código y aquí poco a poco te ayudamos a resolverlo.
Saludos!