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.
¿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.
Muchas gracias por la info NiuWeb. Ya he puesto el icono y la versión que uso es la 1.4.1567
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]
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)
Muchas gracias me sirvió de gran ayuda. No me fijé en comparar esos dos valores :D