Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Betox en Septiembre 12, 2014, 04:29:14 AM

Título: [Ayuda] Configuracion de Joystick en GML
Publicado por: Betox en Septiembre 12, 2014, 04:29:14 AM
Hola gente, quisiera saber si me puede aclara con este tema.
Resulta que quiero hacer andar mi juego con el Joystick o sea que pueda usar tanto el teclado como el joystick al empezar el juego.
O sea no quiero crear algun tipo menu que me de a elegir si quiero jugar con joystick o Teclado.

Este es el codigo que uso para el juego, medio largo, pero bueno.
quisiera saber como se le agrega lineas de comando para el joystick, la verdad que no le entendi la ayuda del GM8  :GM8:,



//Esto va servir para cuando nuestro personaje/objeto este agachado hacia la der. o izq.

if not place_free(x,y+1)
{
if mirar = 1
{
if keyboard_check(ord("S")
sprite_index = spr_p1_agachado_der;
}
else
if mirar = 0
{
if keyboard_check(ord("S")
sprite_index = spr_p1_agachado_izq;
}
}

//Esto va servir para cuando nuestro personaje/objeto camine hacia la izq. o der.

if keyboard_check (ord("D")
{
caminar = true;
mirar = 1;
if keyboard_check(ord("K")
{
if place_free(x+5,y)
{
x += 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.4;
}
}


}
else
{
if place_free(x+3,y)
{
x += 1.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.2;
}
}
}
}
if keyboard_check_released(ord("D"))
{
caminar = false;
}

if keyboard_check (ord("A"))
{
caminar = true;
mirar = 0;
if keyboard_check(ord("K"))
{
if place_free(x-5,y)
{
x -= 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_izq;
image_speed = 0.4;
}
}


}
else
{
if place_free(x-3,y)
{
x -= 1.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_izq;
image_speed = 0.2;
}
}
}
}
if keyboard_check_released(ord("A"))
{
caminar = false;
}

//Esto va servir para cuando nuestro personaje/objeto tenga gravedad.

if place_free(x,y+1)
{
gravity = 0.6;
}
else
{
gravity = 0;
}

//Esto va servir para cuando nuestro personaje/objeto pueda saltar.

if keyboard_check_pressed(ord("J")) and not place_free(x,y+1)
{
sound_play(snd_saltar);
vspeed = -7;
}
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: diegohernans en Septiembre 12, 2014, 07:50:12 AM
Nunca he usado la función joystick pero creo que esta podría servirte joystick_direction() busca por este nombre en el manual http://docs.yoyogames.com
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: penumbra en Septiembre 12, 2014, 08:39:48 AM
Tienes que configurar de manera correcta tu juego, porque no es recomendable que el teclado y el joystick funcionen a la vez. Es poco probable, pero nunca se sabe con los "trolls", por ejemplo, si se presiona izquierda en la cruzeta del mando y al mismo tiempo se presiona la flecha izquierda en el teclado, la velocidad de ambos eventos se sumará y el personaje avanzará el doble de rápido de lo esperado

La función joystick_direction() devuelve un código dependiendo de la dirección de la cruzeta. Esos valores se pueden conocer usando draw_text o el debugger. Yo uso esto en mi juego, es solo un ejemplo, tú necesitas adaptarlo a tus necesidades.
[gml]switch (joystick_direction(1))
{
        case 100: { dir_pad = -rapidezx; } break;        //izquierda
        case 102: { dir_pad =  rapidezx; } break;        //derecha
        case 104: { UP = 1;   } break;                       //arriba
        case 98:  { DOWN = 1; } break;                    //abajo
}[/gml]

Hay un valor para cuando el jpystick está en posición neutral, no recuerdo cuál es pero es muy fácil dde averiguar usando draw_text. Si no quieres usar valores digitales de la cruzeta, sino que quieres usar valores analógicos de la palanca, entonces tienes que leer el valor de los ejes. El número y distribución de ejes varía de joystick a joystick. El valor de los ejes varia de -1 a 1, por ejemplo -1 es totalmente a la izquierda, 0 es en el centro (neutral) y 1 es totalmente a la derecha, habiendo por supuesto valores intermedios como -0.7 o 0.4

Ejemplo
[gml]vspeed = -5 * joystick_ypos(1)[/gml]
La velocidad (y dirección) variaría según la posición (vertical) de la palanca



Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: Betox en Septiembre 15, 2014, 08:57:39 PM
Muchas gracias, aumque no entendi mucho, saludos.
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: penumbra en Septiembre 15, 2014, 09:09:34 PM
pues no es nada difícil. Si quieres que el personaje se mueva hacia la derecha, puedes hacer esto

[gml]if joystick_direction(1) == 102
      x+= 4[/gml]

o esto:
[gml]if ( joystick_xpos(1) > 0.4 )
      x+= 4[/gml]


Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: Betox en Septiembre 17, 2014, 05:13:21 PM
Cita de: penumbra en Septiembre 15, 2014, 09:09:34 PM
pues no es nada difícil. Si quieres que el personaje se mueva hacia la derecha, puedes hacer esto

[gml]if joystick_direction(1) == 102
      x+= 4[/gml]

o esto:
[gml]if ( joystick_xpos(1) > 0.4 )
      x+= 4[/gml]




Gracias, pero no entiendo mucho como adherir estas funciones a la codificicacion que mostre arriba, apenas estoy aprendiendo esto del GML, perdon por ser molesto. Saludos.
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: rogerskate en Septiembre 18, 2014, 11:52:23 AM
Yo hice un juego donde le implemente incluso 2 entradas por teclado, la entrada "WASD" y la de las flechas. Es mejor que hagas un selector de entrada, entonces haces en 2 Scripts o en 2 hojas de código las funciones determinadas, luego en el selector lo pones a que elija, por ejemplo si el selector marcó "Teclado", entonces usas solo el código del teclado, si marcó "Joystick" usas solo el del joystick... Todo eso se lo implementas con variables.

La otra forma es hacer que si existe un joystick (if joystick_exist(1)) desactive la entrada por teclado, de lo contrario, la entrada del joystick quedaría desactivada.

Si lo pones de la manera que quieres, no es que no se pueda, pero si no sabes manejar bien el :GMS: puede que termine dando esos Bugs como dijo el colega más arriba, lo cual sería como trampa; dependiendo del caso.

Te sugiero que busques más tutoriales o que trates de interpretar la ayuda del :GMS: para que te informes más y aprendas más, así aprendí yo. Saludos  8)
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: Guacusio en Septiembre 18, 2014, 05:05:30 PM
Citar//Esto va servir para cuando nuestro personaje/objeto camine hacia la izq. o der.

if keyboard_check (ord("D")
{
caminar = true;
mirar = 1;
if keyboard_check(ord("K")
{
if place_free(x+5,y)
{
x += 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.4;
}
}

Según este código que pusiste, para caminar a la derecha es requisito presionar las teclas D y K simultáneamente, ¿es correcto que quieres que pase esto?

Lo que dijo penumbra es la forma más sencilla para mover una instancia en forma continua según la dirección del joystick que se encuentre presionada, aunque lamentablemente GM8 no posee funciones del tipo "joystick press" que te permitan detectar pulsaciones breves (por ejemplo para desplazarte por un menú opción por opción); este evento puede sin embargo ser simulado con código.

Rogerskate dijo:

CitarLa otra forma es hacer que si existe un joystick (if joystick_exist(1)) desactive la entrada por teclado, de lo contrario, la entrada del joystick quedaría desactivada.

Es una buena forma de que tu juego discrimine por sí mismo desde el inicio si debe considerar el teclado o el joystick para controlar el juego. Aunque penumbra está en lo cierto al afirmar que pueden ocurrir cosas extrañas si alguien intenta usar simultáneamente el joystick y el teclado, sería un caso muy extraño (una persona que aparte de estar desequilibrada mentalmente posea una habilidad increíble para sostener el joystick y al mismo tiempo presionar teclas  XD ). Lo que yo hago normalmente es hacer que el juego sea controlado completamente por el teclado y luego mapeo las pulsaciones del joystick a las teclas correspondientes.

Pero lo que más te interesa es saber cómo aplicar el código de penumbra a tu caso. Para el caso de mover la instancia a la derecha sería lo siguiente (dejé la detección de la tecla K como la pusiste porque no entiendo qué quieres hacer con eso):

if joystick_direction(1)=102 //suponiendo que el código 102 corresponde a la presión del pad hacia la derecha
{
caminar = true;
mirar = 1;
if keyboard_check(ord("K")
{
if place_free(x+5,y)
{
x += 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.4;
}
}
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: TheSandBoxMKG en Septiembre 18, 2014, 08:11:48 PM
Cita de: Guacusio en Septiembre 18, 2014, 05:05:30 PM
Citar//Esto va servir para cuando nuestro personaje/objeto camine hacia la izq. o der.

if keyboard_check (ord("D")
{
caminar = true;
mirar = 1;
if keyboard_check(ord("K")
{
if place_free(x+5,y)
{
x += 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.4;
}
}

Según este código que pusiste, para caminar a la derecha es requisito presionar las teclas D y K simultáneamente, ¿es correcto que quieres que pase esto?

Lo que dijo penumbra es la forma más sencilla para mover una instancia en forma continua según la dirección del joystick que se encuentre presionada, aunque lamentablemente GM8 no posee funciones del tipo "joystick press" que te permitan detectar pulsaciones breves (por ejemplo para desplazarte por un menú opción por opción); este evento puede sin embargo ser simulado con código.

Rogerskate dijo:

CitarLa otra forma es hacer que si existe un joystick (if joystick_exist(1)) desactive la entrada por teclado, de lo contrario, la entrada del joystick quedaría desactivada.

Es una buena forma de que tu juego discrimine por sí mismo desde el inicio si debe considerar el teclado o el joystick para controlar el juego. Aunque penumbra está en lo cierto al afirmar que pueden ocurrir cosas extrañas si alguien intenta usar simultáneamente el joystick y el teclado, sería un caso muy extraño (una persona que aparte de estar desequilibrada mentalmente posea una habilidad increíble para sostener el joystick y al mismo tiempo presionar teclas  XD ). Lo que yo hago normalmente es hacer que el juego sea controlado completamente por el teclado y luego mapeo las pulsaciones del joystick a las teclas correspondientes.

Pero lo que más te interesa es saber cómo aplicar el código de penumbra a tu caso. Para el caso de mover la instancia a la derecha sería lo siguiente (dejé la detección de la tecla K como la pusiste porque no entiendo qué quieres hacer con eso):

if joystick_direction(1)=102 //suponiendo que el código 102 corresponde a la presión del pad hacia la derecha
{
caminar = true;
mirar = 1;
if keyboard_check(ord("K")
{
if place_free(x+5,y)
{
x += 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.4;
}
}

Con el tema de la d y la k, debio ser una confusion o que?
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: rogerskate en Septiembre 18, 2014, 11:05:40 PM
Oye man O.O en :GM8: no existe para Joystick ._. en :GMS: si hay para Joystick  :-[
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: TheSandBoxMKG en Septiembre 18, 2014, 11:11:04 PM
Cita de: rogerskate en Septiembre 18, 2014, 11:05:40 PM
Oye man O.O en :GM8: no existe para Joystick ._. en :GMS: si hay para Joystick  :-[

Si que existe  :-\
Hay eventos para ello incluso (Fijate entre los eventos de la categoria mouse)
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: Betox en Septiembre 19, 2014, 07:35:45 PM
Cita de: Guacusio en Septiembre 18, 2014, 05:05:30 PM

Hola. gracias por responder. la "K" es para correr y la "J" para saltar, se mueve con las teclas "WASD".

Aca les dejo el archivo editable para  :GM8:

Acabo de encontrar errores como cuando uno salta contra la pared sin soltar el boton de saltar , el personaje no cambia el sprite a estar quieto; al presionar las teclas de agacharse e izq. o dere. el personaje salte patinando (ajajajajaj); al saltar hacia alguno de los lados y aprieto la tecla de correr , el personaje agarra mas velocidad (cosa que no deberia pasar)

Bueno gracias a todos, lamento ser molesto, pero bue me interesa aprender este programa.
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: Betox en Septiembre 20, 2014, 02:22:23 AM
Cita de: TheSandBoxMKG en Septiembre 18, 2014, 08:11:48 PM
Cita de: Guacusio en Septiembre 18, 2014, 05:05:30 PM
Citar//Esto va servir para cuando nuestro personaje/objeto camine hacia la izq. o der.

if keyboard_check (ord("D")
{
caminar = true;
mirar = 1;
if keyboard_check(ord("K")
{
if place_free(x+5,y)
{
x += 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.4;
}
}

Según este código que pusiste, para caminar a la derecha es requisito presionar las teclas D y K simultáneamente, ¿es correcto que quieres que pase esto?

Lo que dijo penumbra es la forma más sencilla para mover una instancia en forma continua según la dirección del joystick que se encuentre presionada, aunque lamentablemente GM8 no posee funciones del tipo "joystick press" que te permitan detectar pulsaciones breves (por ejemplo para desplazarte por un menú opción por opción); este evento puede sin embargo ser simulado con código.

Rogerskate dijo:

CitarLa otra forma es hacer que si existe un joystick (if joystick_exist(1)) desactive la entrada por teclado, de lo contrario, la entrada del joystick quedaría desactivada.

Es una buena forma de que tu juego discrimine por sí mismo desde el inicio si debe considerar el teclado o el joystick para controlar el juego. Aunque penumbra está en lo cierto al afirmar que pueden ocurrir cosas extrañas si alguien intenta usar simultáneamente el joystick y el teclado, sería un caso muy extraño (una persona que aparte de estar desequilibrada mentalmente posea una habilidad increíble para sostener el joystick y al mismo tiempo presionar teclas  XD ). Lo que yo hago normalmente es hacer que el juego sea controlado completamente por el teclado y luego mapeo las pulsaciones del joystick a las teclas correspondientes.

Pero lo que más te interesa es saber cómo aplicar el código de penumbra a tu caso. Para el caso de mover la instancia a la derecha sería lo siguiente (dejé la detección de la tecla K como la pusiste porque no entiendo qué quieres hacer con eso):

if joystick_direction(1)=102 //suponiendo que el código 102 corresponde a la presión del pad hacia la derecha
{
caminar = true;
mirar = 1;
if keyboard_check(ord("K")
{
if place_free(x+5,y)
{
x += 2.6;
if not place_free(x,y+1)
{
sprite_index = spr_p1_camina_der;
image_speed = 0.4;
}
}

Con el tema de la d y la k, debio ser una confusion o que?

JAJAJA... es la letra que le asigne para correr.
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: Betox en Septiembre 21, 2014, 10:39:44 PM
Cita de: TheSandBoxMKG

Citar//Esto va servir para cuando nuestro personaje/objeto camine hacia la izq. o der.

Este codigo ""if joystick_direction(1)=102" es para ir a la derecha, lo mismo hago para la izquierda o sea pongo este pequeñe codigo. ¿y para los botonoes?, ya que tengo uno de correr y otro de saltar.     Saludos
Título: Re:[Ayuda] Configuracion de Joystick en GML
Publicado por: Betox en Septiembre 27, 2014, 08:54:29 PM
 ???