Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: XnetLoL en Febrero 27, 2014, 12:32:35 PM

Título: Ayúdenme con este script
Publicado por: XnetLoL en Febrero 27, 2014, 12:32:35 PM
Hola a todo el mundo, después de intentar registrarme 20 veces (con todo lo que te pide el registro) porfin he podido entrar en el foro  XD . Estoy programando un juego con un amigo y para que el jugador se mueva he utilizado un script de joystick:

// Red player uses left joystick
lad=-1
lad=obj_GlobalJoystick.lad

lad=GetDirection(lad)

switch lad
{
    case d_Up:
         {
          if y -5 > 0 {y -=5};break;
         }
    case d_Down:
         {
          if y +5 < room_height {y +=5};break;     
         }
    case d_Left:
         {
          if x -5 > 0 {x -=3} ;break;       
         }
    case d_Right:
         {
          if x +5 < room_width {x +=5} ;break;       
         
         }
}


Os lo resumo un poco, el script hace que cuando muevas el joystick hacia una dirección, se cree el movimiento del personaje (si os fijáis cuando va a la izquierda sigue moviéndose hacia la derecha pero más lento, eso ya es por el juego que quiero hacer no por un error de programación). El script funciona correctamente, pero lo que quiero es hacer que cuando muevas el joystick hacia una dirección que una bala se dispare hacia esa misma dirección (hay dos joysticks, el del lado izquierda de la pantalla y el del lado derecho de la pantalla, el anterior es el del lado izquierdo).

El script que he usado para intentar que dispare dependiendo de la posición del joystick es este:

// Blue player uses right joystick
rad=-1
rad=obj_GlobalJoystick.rad

rad=GetDirection(rad)

switch rad
{
    case d_Up:
         {
          if y -5 > 0 {instance_create(0,5,object6)};break;
         }
    case d_Down:
         {
          if y +5 < room_height {instance_create(0,-5,object6)};break;     
         }
    case d_Left:
         {
          if x -5 > 0 {instance_create(-5,0,object6)} ;break;       
         }
    case d_Right:
         {
          if x +5 < room_width {instance_create(5,0,object6)} ;break;       
         
         }
}


Resumiendo, he añadido este código instance_create(0,5,object6) pero no funciona, lo que quiero es el código de "Create moving instance of object X", el que se usa para disparar. ¿Alguien me puede ayudar? Gracias!!! :)
Título: Re:Ayúdenme con este script
Publicado por: elviskelley en Febrero 28, 2014, 12:52:18 AM
En este tutorial (algo poco ortodoxo) mostraremos como adaptar tu juego para que pueda ser jugado sin necesidad de programas externos, este metodo hace que al presionar un cierto boton del joystick se active el evento de presionar cierta tecla, por ejemplo si al presionar la tecla "A" del teclado el personaje del juego brinca, y si el joystick está configurado para que haga lo que hace el personaje al presionar la tecla "A", que el personaje brinque.



Primero tendremos que crear un timeline para cada tecla que queramos activar con nuestro joystick, en este caso queremos que al presionar el boton izquierdo del joystick se active el evento de presionar la tecla izquierda:

1.- Creamos un timeline, y en ese timeline añadimos un nuevo "moment" presionando el boton "ADD" (el cual se distingue porque tiene una cruz verde) y al step le indicamos el valor de cero.

En el interior de este step agregamos el siguiente scrip: keyboard_key_press(vk_left)

Despues agregamos otro step con el valor 1, y en su interior agregamos el siguiente scrip: keyboard_key_release(vk_left)

y despues presionamos el boton "OK" para guardar el timeline.

Nota: Para saber que codigo usar despues de keyboard_key_press o keyboard_key_release para emular presionar otras teclas, puedes encontrar los codigos entre la lista de scripts que encuentras en el menu de scripts, la mayoria comienzan con "vk_", por ejemplo, para activar el evento de presionar la tecla "space" el codigo sería "vk_space".
(http://www.palimpalem.com/4/elviskelley/userfiles/showbuiltin_functions.png)
En el caso de necesitar que la tecla a activar sea una letra o numero, por ejemplo la tecla "A", el codigo que necesitarías sería "(ord('A'))".

2.- Una vez creado el timeline creamos un objeto, el cual servirá para que de la orden de activar el evento de presionar la tecla left cuando presionemos el boton 1 del joystick.

En el evento de presionar el boton 1 del joystick simplemente agrega la funcion de "Set time line", escogiendo el timeline que hemos creado, y presiona "OK" para guardar el objeto.

Recuerda que para que esto funcione estos objetos deben estar en las rooms que se necesiten, ya que de lo contrario no servirá el truco.



Espero que te haya servido el tutorial, en caso de que no se entienda muy bien, aqui dejo un ejemplo de como funciona este truco junto con un minijuego en el que mueves a una banana a los lados con los botones del pad del joystick y del teclado, y con el boton 1 y tecla "A" la mueves a un lugar al azar.
Link para descargar: aqui. (http://www.gmtutoek.3a2.com)
Título: Re:Ayúdenme con este script
Publicado por: vampy09 en Febrero 28, 2014, 06:53:34 AM
En el adjunto te muestro una forma de hacerlo, depende de ti mejorarla.