Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: saruman en Abril 10, 2016, 10:52:24 PM

Título: problema con step y crear friccion
Publicado por: saruman en Abril 10, 2016, 10:52:24 PM
hola, acabo de tener un problema un poco raro y es que en el evento step trate de hacer que cada vez que la variable hsp fuera mayor que 0 a esta se le restara 0.2 hasta dejarla en cero, pero en vez de eso simplemente le resta 0.2 una sola vez :'( :'( :'(.
coloque esto pero no entiendo por que no funciona esta vez:
if hsp > 0 {hsp -= 0.2}
pero por algún motivo no funciona, les agradecería mucho si me ayudaran.
Título: Re:problema con step y crear friccion
Publicado por: bygdle en Abril 10, 2016, 10:57:54 PM
quizás la variable hsp nunca es mayor a 0, pero hay otro problema: Dices que quieres que si sea mayor a 0, restarle 0.2 hasta dejarlo en 0. Pero ¿Si, por ejemplo, el valor es de 0.1? Podrías tener negativos como resultado D:

En el peor de los casos, podrías usar variables predefinidas, como hspeed y friction
Título: Re:problema con step y crear friccion
Publicado por: saruman en Abril 10, 2016, 11:06:34 PM
Cita de: NiuWeb en Abril 10, 2016, 10:57:54 PM
quizás la variable hsp nunca es mayor a 0, pero hay otro problema: Dices que quieres que si sea mayor a 0, restarle 0.2 hasta dejarlo en 0. Pero ¿Si, por ejemplo, el valor es de 0.1? Podrías tener negativos como resultado D:

En el peor de los casos, podrías usar variables predefinidas, como hspeed y friction

gracias por responder, pero el problema parese ser otro , aunque ponga que reste 0.01 a hsp no lo hace mas de una vez aunque hsp sea 1 o 4. aqui dejo el codigo por si vez algo que yo no:
///movimiento
key_right = keyboard_check(vk_right);
key_left = -keyboard_check(vk_left);

move = key_right + key_left;

if key_right dir = 1;
if key_left dir = -1;

if (move) && (dir = 1) && (fu < 4) {fu += 0.4};

hsp = fu;

if hsp > 0 {hsp -= 0.2}

if (place_meeting(x+hsp,y,obj_block))
{

    {
        while(!place_meeting(x+sign(hsp),y,obj_block))
            {
                x += sign(hsp);
            }
        hsp = 0;
    }
}
x += hsp;
Título: Re:problema con step y crear friccion
Publicado por: bygdle en Abril 10, 2016, 11:29:29 PM
Creo que te estás haciendo una bola de código xD
Mi modificación sería ésta:
[gml]
key_left = keyboard_check(vk_left);
key_right = keyboard_check(vk_right);

if key_right {
   if hsp < 4
      hsp += 0.4;
   else
      hsp = 4;
}
else {
   if hsp > 0
      hsp -= 0.2;
}
if !place_meeting(x + hsp, y, obj_block)
    x += hsp;
[/gml]
Esto suponiendo que tienes un hsp = 0 declarado en <create>
Título: Re:problema con step y crear friccion
Publicado por: saruman en Abril 10, 2016, 11:36:21 PM
Cita de: NiuWeb en Abril 10, 2016, 11:29:29 PM
Creo que te estás haciendo una bola de código xD
Mi modificación sería esta:
[gml]
key_left = keyboard_check(vk_left);
key_right = keyboard_check(vk_right);

if key_right {
   if hsp < 4
      hsp += 0.4;
   else
      hsp = 4;
}
else {
   if hsp > 0
      hsp -= 0.2;
}
if !place_meeting(x + hsp, y, obj_block)
    x += hsp;
[/gml]
Esto suponiendo que tienes un hsp = 0 declarado en <create>

muchas gracias  :) :) , no creí que fuera por que hice el código inesesariamente complejo :-[, despues de todo era un extraño experimento de tratar de hacer un movimiento fluido, gracias de nuevo  :)