Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: predicador en Junio 02, 2015, 10:55:51 PM

Título: Problema con movimiento
Publicado por: predicador en Junio 02, 2015, 10:55:51 PM
Aupa:
Me estoy volviendo loco.
tengo este codigo:
//Movimiento de la nave

if (keyboard_check(ord('A')))  x -= 5;
if (keyboard_check(ord('D'))) x += 5;
if (keyboard_check(ord('W')))    y -= 5;
if (keyboard_check(ord('S')))  y += 5;

//Fin


El problema es que si estoy moviendome a la derecha y apreto a la vez la izquierda se para. quiero que si apreto uno y despues el otro a la vez se mueva hacia la ultima direccion, de esa forma quiero conseguir que la nave tenga un movimiento fluido y rapido.
Título: Re:Problema con movimiento
Publicado por: Marth en Junio 02, 2015, 11:28:30 PM
Prueba esto:

if(keyboard_check(ord('A'))) x -= 5
else if(keyboard_check(ord('D'))) x += 5
if(keyboard_check(ord('W'))) y -= 5
else if(keyboard_check(ord('S'))) y += 5
Título: Re:Problema con movimiento
Publicado por: predicador en Junio 02, 2015, 11:56:33 PM
si voy a la derecha y cambio a la izquierda es lo que buscaba pero de izquierda a derecha me pasa igual...
Título: Re:Problema con movimiento
Publicado por: Clamud en Junio 03, 2015, 04:02:55 PM
Crea unas variables para las velocidades horizontal o vertical (o usa hspeed y vspeed) y usa éste código:
[gml]
///Create
vx = 0; //velocidad horizontal
vy = 0; //velocidad vertical
[/gml]
[gml]
///Step
if keyboard_check_pressed( ord('A') ) vx = -5;
if keyboard_check_pressed( ord('D') ) vx = +5;
if keyboard_check_pressed( ord('W') ) vy = -5;
if keyboard_check_pressed( ord('S') ) vy = +5;

if keyboard_check_released( ord('A') )
and( vx < 0 ) vx = 0;
if keyboard_check_released( ord('D') )
and( vx > 0 ) vx = 0;
if keyboard_check_released( ord('W') )
and( vy < 0 ) vy = 0;
if keyboard_check_released( ord('S') )
and( vy > 0 ) vy = 0;

x += vx;
y += vy;
[/gml]