Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: babyvancho en Noviembre 20, 2018, 04:00:49 PM

Título: [SOLUCIONADO] Direction con mando Xbox
Publicado por: babyvancho en Noviembre 20, 2018, 04:00:49 PM
Buenas tardes a tod@s,
  Primeramente agradecer a todo el que hace posible esta gran comunidad, pues me está ayundo mucho en el desarrollo de mi juego.

  Tengo un pequeño problema, estoy haciendo un juego con vista top-down y uso el pad de Xbox para mover al personaje. Uso el siguiente código para poder controlarlo y que gire y avance dependiendo de la posición del eje x e y del mando:

[spoiler]if (input = "Xbox")
{
    gamepad_set_axis_deadzone(0, 0.5);
    var haxis = gamepad_axis_value(0, gp_axislh);
    var vaxis = gamepad_axis_value(0, gp_axislv);
    direction = point_direction(0, 0, haxis, vaxis);
    velocidad = point_distance(0 ,0, haxis, vaxis) * velocidadMax;

    image_angle = direction;
    speed = velocidad;
   
    //Control de los pies
    idPies.speed = speed;
    idPies.image_angle = image_angle;
    idPies.direction = direction;
}[/spoiler]

El problema viene cuando suelto el pad, el sprite en vez de quedarse mirando en la última dirección, vuelve a la posición de 0 grados. Agradecería que me hechasen una mano.
Título: Re:Direction con mando Xbox
Publicado por: bygdle en Noviembre 20, 2018, 06:46:57 PM
¿Qué versión de GameMaker estás usando?
Puedes poner el ícono del GM correspondiente en el post para que los usuarios te puedan ayudar mejor.
Título: Re:Direction con mando Xbox
Publicado por: babyvancho en Noviembre 20, 2018, 08:23:38 PM
Muchas gracias por la info NiuWeb. Ya he puesto el icono y la versión que uso es la 1.4.1567
Título: Re:Direction con mando Xbox
Publicado por: Clamud en Noviembre 21, 2018, 06:09:31 AM
En el evento Create asigna los valores por defecto de las variables velocidad y direction
[gml]
velocidad = 0;
direction = 0;
[/gml]
No se si direction es realmente necesaria, porque el valor se copia a la variable speed.

En el evento Step actualiza los valores solo si los ejes están fuera del centro
[gml]
gamepad_set_axis_deadzone(0, 0.5);
var haxis = gamepad_axis_value(0, gp_axislh);
var vaxis = gamepad_axis_value(0, gp_axislv);
if (haxis <> 0 or vaxis <> 0) {
    direction = point_direction(0, 0, haxis, vaxis);
    velocidad = point_distance(0 ,0, haxis, vaxis) * velocidadMax;
}
[/gml]
Título: Re:Direction con mando Xbox
Publicado por: kostra en Noviembre 21, 2018, 11:51:06 AM
Yo me pregunto por que los point direction y distance se miden desde 0,0 hasta el axis ese, en vez de desde x,y ya que 0,0 es 0,0 de la room no del player, a no ser que en la ventana de codigo arriba cambiaste la relatividad al mismo objeto (opcion que no recomiendo mucho usar)
Título: Re:Direction con mando Xbox
Publicado por: babyvancho en Noviembre 21, 2018, 12:51:50 PM
Muchas gracias me sirvió de gran ayuda. No me fijé en comparar esos dos valores  :D