Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: loro2000 en Julio 09, 2012, 11:26:04 AM

Título: Que no se pare???
Publicado por: loro2000 en Julio 09, 2012, 11:26:04 AM
Como puedos hacer para que al tocarse con un object no se pare. Quiero decir ,que al tocarlo, se me queda, como colgado o agarrado al object. P.ej. el obj_block que lo llamo yo es el object que uso para el suelo, las paredes, vamos , que es solido, pero po ejemplo si hago un juego de plataformas y el player toca la plataforma desde abajo se me queda agarrado hasta que suelto la tecla. No se si se entiende, si no se entiendo me dais permiso para colgar un adjunto de un juego que estoy creandro y en el que me pasa.
Título: Re:Que no se pare???
Publicado por: SobacoEnLlamas en Julio 09, 2012, 11:57:32 AM
no sé bien bien a qué te refieres :S pero has mirado que no sea que tienes marcado solid y eso afecte? a mi me ha pasado
Título: Re:Que no se pare???
Publicado por: elviskelley en Julio 09, 2012, 02:52:44 PM
En el objPiso.
Event End step.
if objJugador.y < y then {solid=true;}else{solid=false;}
//esto hará que solo

Y En el objJugador
Event de colision contra el objPiso
if other.solid
{
aqui colocas lo que ya esta en ese event
}
Título: Re:Que no se pare???
Publicado por: loro2000 en Julio 09, 2012, 03:37:44 PM
elvis lo he intentado y lo que me pasa esque ahora el personaje atraviesa el piso
Título: Re:Que no se pare???
Publicado por: SobacoEnLlamas en Julio 09, 2012, 03:56:42 PM
no es eso lo que querías? xd.. si te referías a otro objecto, aplica lo que te dijo con ese objecto y no el piso
Título: Re:Que no se pare???
Publicado por: eltantillo en Julio 09, 2012, 11:41:56 PM
Cita de: elviskelley en Julio 09, 2012, 02:52:44 PM
En el objPiso.
Event End step.
if objJugador.y < y then {solid=true;}else{solid=false;}
//esto hará que solo

Y En el objJugador
Event de colision contra el objPiso
if other.solid
{
aqui colocas lo que ya esta en ese event
}

Lo que pasa es que se esta utilizando un único objeto para cualquier pared, sea piso o techo o pared de un lado, según lo que leí en el primer post.

Al hacer el objeto sólido y mantener pulsado la tecla en dirección al objeto sólido, es como si estuvieras "metiendo" a tu personaje dentro del objeto y es por eso que no puede moverse en ninguna otra dirección.

Lo que tienes que hacer es un script que te ayude a detectar en que direccion esta el bloque y hacia donde te estas moviendo, crea un script nuevo y llamalo step_solid y dentro debes incuir este codigo:
var i;
if (keyboard_check(argument1))
    for (i=argument0;i>=0;i-=1)
        if (place_free(x,y-i))
            y-=i;
            else
                {
                if (place_free(x-i,y-i))
                    x-=i/2;
                if (place_free(x+i,y-i))
                    x+=i/2;
                }
if (keyboard_check(argument2))
    for (i=argument0;i>=0;i-=1)
        if (place_free(x,y+i))
            y+=i;
            else
                {
                if (place_free(x-i,y+i))
                    x-=i/2;
                if (place_free(x+i,y+i))
                    x+=i/2;
                }
if (keyboard_check(argument3))
    for (i=argument0;i>=0;i-=1)
        if (place_free(x-i,y))
            x-=i;
            else
                {
                if (place_free(x-i,y-i))
                    y-=i/2;
                if (place_free(x-i,y+i))
                    y+=i/2;
                }
if (keyboard_check(argument4))
    for (i=argument0;i>=0;i-=1)
        if (place_free(x+i,y))
            x+=i;
            else
                {
                if (place_free(x+i,y-i))
                    y-=i/2;
                if (place_free(x+i,y+i))
                    y+=i/2;
                }

y lo llamas desde el step event del jugador de la siguiente manera:
step_solid(3,vk_up,vk_down,vk_left,vk_right);
donde:
Título: Re:Que no se pare???
Publicado por: loro2000 en Julio 17, 2012, 02:44:34 PM
lo siento, creo que no me habeis entendido. Lo que me pasa es que por ejemplo si me tiro a una pared se queda como pegado si sigo manteniendo el boton o lo mismo pero si salto por debajo de una plataforma.
Título: Re:Que no se pare???
Publicado por: SobacoEnLlamas en Julio 17, 2012, 02:54:32 PM
no dirás el suelo tipo sonic? que se pueda pasar por debajo pero luego no te caigas desde arriba??
Título: Re:Que no se pare???
Publicado por: loro2000 en Julio 17, 2012, 03:01:19 PM
no . mira te dejo el link del editable para que lo descargues y para que veas tu mismo como se queda pegado al saltar sobre las paredes

https://www.dropbox.com/s/fak5h6l4iyotr74/P.A.L.L.%20%28%20Paises%20A%20La%20Lucha%20%29%20bueno.gmk
Título: Re:Que no se pare???
Publicado por: SobacoEnLlamas en Julio 18, 2012, 03:29:56 PM
veo otros miles de bugs xDD pero bueno, para que no se pegue, cambia el código que tienes en la colisión con el obj_block (por cierto yo le pongo el mismo nombre en mis juegos jaja) y pon esto:

if other.y>y && !place_free(x,y+vspeed){
    move_contact_solid(270,8);
    vspeed=0;
    gravity=0;}
if other.y<y && !place_free(x,y+vspeed){
    move_contact_solid(90,8);
    vspeed=0;}
Título: Re:Que no se pare???
Publicado por: elviskelley en Julio 19, 2012, 03:51:25 AM
en la tecla de saltar antes del codigo de salto agrega
if !place_free(x,y+1)
{ aca tu codigo de salto normal el que usas que imago es vspeed=-10; bueno...}
lo que hice fue verificar si esta sobre alguna instancia solida osea el piso, solo si esta sobre el piso se eleva, asi si esta en el aire no se eleva, y no funka si esta debajo, asi no debe pegarse.