Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: 3dgeminis en Abril 11, 2013, 05:54:11 PM

Título: Aumento de velocidad en diagonal
Publicado por: 3dgeminis en Abril 11, 2013, 05:54:11 PM
Estoy haciendo un juego con vista de arriba, por ahora tengo un sencillo codigo de movimiento (x+=4). El "problema" es cuando apreto 2 teclas arriba y derecha por ejemplo, y la velocidad es mayor que cuando apreto una sola. Hay alguna solucion para esto ???
Título: Re:Aumento de velocidad en diagonal
Publicado por: JuanP en Abril 11, 2013, 07:18:22 PM
Hola. Pues así rápidamente se me ocurre que en lugar de usar el clásico x = x + velocidad; y = y + velocidad, intenta con las variables speed y direction algo como:

if keyboard_check(vk_left)
   speed = velocidad
   direction = 180
   ... etc
Título: Re:Aumento de velocidad en diagonal
Publicado por: 3dgeminis en Abril 11, 2013, 11:02:39 PM
Es lo mismo, se cambia una variable por la otro pero gracias, seguire intentando arreglarlo.
Título: Re:Aumento de velocidad en diagonal
Publicado por: Johann en Abril 11, 2013, 11:32:30 PM
piensa en un triangulo rectángulo con dos lados iguales (catetos), el tercero siempre será mas grande (hipotenusa), si los lados iguales miden 1, el otro medirá raíz cuadrada de 2 (sqrt(2)).
para poder mover tu objeto con relativa precisión deberás tomar los componentes X y Y de la velocidad diagonal que quieres asi:
[gml]
x += velocidad*cos(degtorad(dirección )) //dirección = múltiplos de 45
y += velocidad*sin(degtorad(dirección ))
[/gml]

o mejor:

[gml]
x += lengthdir_x(velocidad, dirección)//dirección = múltiplos de 45
y += lengthdir_y(velocidad, dirección)
[/gml]
Título: Re:Aumento de velocidad en diagonal
Publicado por: Domenec en Abril 12, 2013, 08:20:29 AM
Puedes hacer esto:
if keyboard_check(vk_up) and  (keyboard_check(vk_right)=false or keyboard_check(vk_left)=false) {y-=4}

Despues en el movimiento diagonal...

if keyboard_check(vk_up) and  (keyboard_check(vk_right) {x+=4 y-=4}
if keyboard_check(vk_up) and  (keyboard_check(vk_left) {x-=4 y-=4}


...y asi para el resto de direcciones
Título: Re:Aumento de velocidad en diagonal
Publicado por: 3dgeminis en Abril 15, 2013, 04:07:11 PM
Gracias por las respuestas ya pude solucionarlo.