Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: J.E.A en Junio 27, 2014, 08:00:44 PM

Título: Problema con velocidad máxima hacia la izquierda (Solucionado)
Publicado por: J.E.A en Junio 27, 2014, 08:00:44 PM
Ando con un problemita y no puedo resolverlo. Es un problema con la velocidad máxima hacia la izquiera, pero cuando es hacia la derecha va sin problemas, pero hacia la izquiera no hace caso al código de la velocidad máxima y aumenta la velocidad sin parar. Así tengo los codigos:

En el evento Create tengo estas variables:


vel_max=2 /// acá le asigné la velocidad máxima///
acel=0.1 ///acá para que camine "acelerando" (de forma gradual como en el clásico Super Mario)


En el evento Right tengo esto:

friction=0

hspeed+=acel

if hspeed>= vel_max
hspeed=vel_max

En el evento Left esto (acá al caminar hacia la izquiera tengo el problema que no respeta la velocidad máxima)

friction=0

hspeed+=-acel

if hspeed>= vel_max
hspeed=vel_max

En Release right tengo:

friction=0.1

Y en Release left:

friction=0.1

A ver si me pueden ayudar  :-[


Título: Re:Problema con velocidad máxima hacia la izquierda (Ayuda)
Publicado por: Clamud en Junio 27, 2014, 08:34:05 PM
El código para la izquierda debe quedar así:
[gml]
friction = 0;

hspeed -= acel;

if hspeed <= -vel_max
hspeed = -vel_max;
[/gml]
Otra forma de hacer lo mismo, y que me gusta más, es ésta:
[gml]
friction = 0;
hspeed = max( hspeed-acel, -vel_max );
[/gml]
Hasta luego.
Título: Re:Problema con velocidad máxima hacia la izquierda (Ayuda)
Publicado por: penumbra en Junio 27, 2014, 08:51:01 PM
también se puede
hspeed = clamp(hspeed, -vel_max, vel_max)
en STEP, creo que funcionaría para ambas direcciones
Título: Re:Problema con velocidad máxima hacia la izquierda (Solucionado)
Publicado por: J.E.A en Junio 27, 2014, 11:21:09 PM
Cita de: Clamud en Junio 27, 2014, 08:34:05 PM
El código para la izquierda debe quedar así:
[gml]
friction = 0;

hspeed -= acel;

if hspeed <= -vel_max
hspeed = -vel_max;
[/gml]
Otra forma de hacer lo mismo, y que me gusta más, es ésta:
[gml]
friction = 0;
hspeed = max( hspeed-acel, -vel_max );
[/gml]
Hasta luego.

Gracias Clamud, me sacaste de apuros, ahora sí respeta ambas velocidades máximas. Saludos! Y gracias penumbra tambien por ayudar!  8)