Autor Tema: rotación con joystic  (Leído 137 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dubaldo

  • Habitual
  • *
  • Puntos: 111
  • Mensajes: 58
    • Ver Perfil
rotación con joystic
« en: Enero 11, 2017, 11:08:53 pm »
muevo mi objeto (un coche) con joystic con este código pero se queda siempre la imagen fija
if(gamepad_is_connected(0)){
x+=gamepad_axis_value(0,gp_axislh)
y+=gamepad_axis_value(0,gp_axislv)
}
else if(joystick_exists(0)){
x+=joystick_xpos(0)
y+=joystick_ypos(0)
}

con el mouse se mueve en todas direcciones y seria algo asi
dir = point_direction(x,y,mouse_x,mouse_y);
dir = point_distance(x,y,mouse_x,mouse_y);
image_angle = dir;

pero con joystic no se como hacerlo
« última modificación: Enero 11, 2017, 11:42:29 pm por dubaldo »


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

  • Okupa
  • *
  • Puntos: 1409
  • Mensajes: 1.291
  • Sexo: Masculino
  • "la vida no vale nada"
    • Ver Perfil
Re:rotación con joystic
« Respuesta #1 en: Enero 12, 2017, 01:37:28 am »
Así puede funcionar
if(gamepad_is_connected(0)){
    xx = gamepad_axis_value(0,gp_axislh);
    yy = gamepad_axis_value(0,gp_axislv);
    dir = point_distance( 0,0, xx,yy );
}
else if(joystick_exists(0)){
    x = joystick_xpos(0);
    y = joystick_ypos(0);
    dir = point_distance( 0,0, xx,yy );
}
else {
    dir = point_distance(x,y,mouse_x,mouse_y);
}
image_angle = dir;
sin embargo, no es buena idea revisar si el gamepad/joystick está conectado en cada Step, esas funciones a veces son lentas, mejor usa variables que se actualicen en otros eventos. Para el gamepad puedes usar el evento asíncrono que se ejecuta al conectar o desconectar, y para el joystick puedes usar una alarma.


Desconectado dubaldo

  • Habitual
  • *
  • Puntos: 111
  • Mensajes: 58
    • Ver Perfil
Re:rotación con joystic
« Respuesta #2 en: Enero 12, 2017, 07:12:10 pm »
Me sale este error


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of  Step Event0
for object object_silla_1:

Push :: Execution Error - Variable Get 100000.yy(100001, -2147483648)
 at gml_Object_object_silla_1_StepNormalEvent_1 (line 20) -     dir = point_distance( 0,0, xx,yy );
############################################################################################

Desconectado dubaldo

  • Habitual
  • *
  • Puntos: 111
  • Mensajes: 58
    • Ver Perfil
Re:rotación con joystic
« Respuesta #3 en: Enero 12, 2017, 08:09:32 pm »
con este codigo va bien pero el joystic va al reves, al girar a la derecha va a la izquierda


if(gamepad_is_connected(0)){
x+=gamepad_axis_value(0,gp_axislh);
y+=gamepad_axis_value(0,gp_axislv);
}
else if(joystick_exists(0))
{
x+=joystick_xpos(0);
y+=joystick_ypos(0);
dir = point_direction(x,y,joystick_xpos(0),joystick_ypos(0));
dir = point_distance(x,y,joystick_xpos(0),joystick_ypos(0));
}
image_angle = dir;

Desconectado dubaldo

  • Habitual
  • *
  • Puntos: 111
  • Mensajes: 58
    • Ver Perfil
Re:rotación con joystic
« Respuesta #4 en: Enero 13, 2017, 07:05:55 pm »
adjunto el proyecto para que veais lo que me pasa

Desconectado Clamud

  • Okupa
  • *
  • Puntos: 1409
  • Mensajes: 1.291
  • Sexo: Masculino
  • "la vida no vale nada"
    • Ver Perfil
Re:rotación con joystic
« Respuesta #5 en: Enero 13, 2017, 10:33:43 pm »
Prueba con esta modificación.

Desconectado dubaldo

  • Habitual
  • *
  • Puntos: 111
  • Mensajes: 58
    • Ver Perfil
Re:rotación con joystic
« Respuesta #6 en: Enero 13, 2017, 11:18:49 pm »
Muchas gracias, te lo has currado mucho.
Implemente este codigo en el evento steep
if(gamepad_is_connected(0)){
x+=gamepad_axis_value(0,gp_axislh);
y+=gamepad_axis_value(0,gp_axislv);
}
else if(joystick_exists(0))
{
x+=joystick_xpos(0);
y+=joystick_ypos(0);

}

ahora la pega es que al soltar el joystick  se vuelve a la posición inicial y no en la dirección en la que va el sprite

« última modificación: Enero 15, 2017, 04:01:28 pm por dubaldo »