Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: carras en Febrero 11, 2016, 06:00:46 PM

Título: Ayuda con gravedad y aterrizaje
Publicado por: carras en Febrero 11, 2016, 06:00:46 PM
Hola chicos tengo un problemilla con un engine rope que estoy probando. En el centro de la pantalla hay un personaje con gravity=1 en su evento create que va callendo hacia el suelo.
Yo he creado un obj_suelo para que aterrice sobre el. En el evento step del personaje digo if place_meeting(x,y+1,obj_suelo){gravity=0}. Pero no funciona el personaje cuando colisiona con el suelo no se detiene sobre el, sigue bajando y descendiendo.
Título: Re:Ayuda con gravedad y aterrizaje
Publicado por: carlos81lp en Febrero 11, 2016, 06:49:49 PM

Ademas de gravity = 0 ponele vspeed = 0
Creo que te falto eso.

Saludos.

Título: Re:Ayuda con gravedad y aterrizaje
Publicado por: carras en Febrero 11, 2016, 07:40:49 PM
Genial funciona :) ahora tengo otro problema  :'(. Cuando el personaje aterriza casi siempre se hunde en el suelo. Tengo mascara de colision precisa tanto en personaje como en el suelo. Muestro un video del proyecto.

https://www.youtube.com/watch?v=SD2YizV55Os&feature=youtu.be (https://www.youtube.com/watch?v=SD2YizV55Os&feature=youtu.be)
Título: Re:Ayuda con gravedad y aterrizaje
Publicado por: carlos81lp en Febrero 12, 2016, 12:05:12 AM
Bien, pero ahí tenés un error por usar las funciones del programa y no unas hechas por vos.
Si vos pones que cuando place_meeting (x,y+1,obj_suelo){vspeed =0; gravity = 0} .... Te va a pasar lo que te pasa, y más todavía si el objeto va más rápido.
Tenes que hacer algo así :
If !place_meeting(x,y+vspeed, obj_suelo){
gravity = 0.5
} else { vspeed = 0; gravity = 0 }
//// creo que algo así andaría un poco mejor...
Título: Re:Ayuda con gravedad y aterrizaje
Publicado por: carras en Febrero 12, 2016, 01:26:15 AM
Va mejor ya se planta bien sobre el suelo pero antes de tocar el suelo se frena y hace un efecto raro. El codigo no tiene nada en la velocidad de caida lo unico que tiene es un evento create con gravity=1. Este es su codigo del evento step lo que mueve el personaje con la cuerda

[spoiler]
//grabs objects that are sol
if mouse_check_button_pressed(mb_left) or  mouse_check_button_pressed(mb_left) and place_meeting(x,y+1,obj_wall)
{
    dir=point_direction(x,y,mouse_x,mouse_y);
   
    x_change=lengthdir_x(8,dir);
    y_change=lengthdir_y(8,dir);

    xx=x;
    yy=y;

    for(i=0;i<1000;i+=1)
    {
        nn=instance_position(xx,yy,all);
   
        if !(nn=noone)
        && !(nn=id)
        {
            if nn.sol
            {
                grab=1;
                break;
            }
        }
       
        xx+=x_change;
        yy+=y_change;
    }
}

//moves
if grab
{
    grab=mouse_check_button(mb_left);
   
    dir=point_direction(x,y,xx,yy);
    motion_add(dir,1.75);
}[/spoiler]
Título: Re:Ayuda con gravedad y aterrizaje
Publicado por: 3dgeminis en Febrero 12, 2016, 02:53:12 AM
Yo uso este codigo y siempre me ha funcionado:

COLISION CON SUELO
y=yprevious
move_contact_all(270,abs(vspeed))
vspeed=0

ademas del codigo para detener la gravedad en STEP.
Título: Re:Ayuda con gravedad y aterrizaje
Publicado por: carras en Febrero 12, 2016, 03:28:07 AM
ahora no hace nada. Se queda trabado xD
Título: Re:Ayuda con gravedad y aterrizaje
Publicado por: kostra en Febrero 12, 2016, 09:02:22 AM
usa SIEMPRE números múltipos de 2, así jamás tendrás errores así.