Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Persistencia en el creation code  (Leído 278 veces)

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

Desconectado PaulleXd

  • Visitante
  • *
  • Puntos: 18
  • Mensajes: 7
    • Ver Perfil
en: Octubre 14, 2018, 05:47:27 am
 :GMS:Hola, tengo un problema con el creation conde de mis controles para android, al cambiar de room se pierde el creation code de los controles y quisiera saber como solucionarlo.
« última modificación: Octubre 14, 2018, 05:50:41 am por PaulleXd »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 en: Octubre 14, 2018, 06:19:15 pm
Hola PaulleXd

No sé qué hace tu creation code, pero tengo entendido que los objetos persistentes arrastran las variables declaradas a la siguiente room.
Si no te funciona, intenta usar un script en el evento "room_start" o crear el objeto de nuevo.

Saludos
« última modificación: Octubre 14, 2018, 06:53:36 pm por BssString »

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo, PaulleXd


Desconectado PaulleXd

  • Visitante
  • *
  • Puntos: 18
  • Mensajes: 7
    • Ver Perfil
Respuesta #2 en: Octubre 14, 2018, 07:54:13 pm
Hola PaulleXd

No sé qué hace tu creation code, pero tengo entendido que los objetos persistentes arrastran las variables declaradas a la siguiente room.
Si no te funciona, intenta usar un script en el evento "room_start" o crear el objeto de nuevo.

Saludos
Lo que hace es hacer de controles virtuales:
// Crear un arreglo vk_keys[] con las keys en cada Creation Code
event_inherited();
vk_key_set = false;

Step Event:

execute code:

if (!vk_key_set) {
    for(var i=0;i<array_length_1d(vk_keys);i++){
        vk =  virtual_key_add(x,y,sprite_width,sprite_height,vk_keys);
    }
    vk_key_set = true;   
}

he intentado cambiar el valor a true del primer bloque de codigo pero no funciona
tomare tu consejo de crear varios objetos en cada room

 


Desconectado BssString

Respuesta #3 en: Octubre 14, 2018, 08:34:37 pm
Hola PaulleXd

Ahora entiendo tu problema, pero no entiendo tu código, lo veo algo extraño aunque si te funciona supongo que está bien.
Por defecto, Game Maker elimina las virtual Keys cuando cambias de room, entonces las debes declarar de nuevo.

Sugiero en el "Room End Event" de cada objeto tecla (o del objeto padre, porque así lo correrán los hijos también) colocar:
Código: [Seleccionar]
vk_key_set = false
Eso hará que al entrar en la siguiente room, se ejecute de nuevo el Step Event y se genere un nuevo mapeo de teclas.

Encuentro extraño tu código, porque según yo cada tecla (u objeto en tu caso) debe mapear una posición.
Eso significa que cada objeto debe tener Sólo una tecla asignada y no un array completo.

Lo que yo haría, es asignar la tecla a cada objeto individual (en el Creation Code), porque él arrastrará ese valor al resto de las rooms:
Creation code (o creation event si son objetos hijos diferentes)
Código: [Seleccionar]
key = vk_upY en el room_start event le mapeo la posición a la tecla asignada, cada vez que inicies una nueva room, se hará el mapeo de nuevo:
Código: [Seleccionar]
virtual_key_add(x,y,sprite_width,sprite_height,key);Entonces cada vez que pulses la ubicación de ese objeto, GM lo detecta como si pulsaras la tecla "vk_up".

Aunque repito, si tu código está ok y funciona bien, no muevas nada.

Saludos

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo, PaulleXd


Desconectado PaulleXd

  • Visitante
  • *
  • Puntos: 18
  • Mensajes: 7
    • Ver Perfil
Respuesta #4 en: Octubre 15, 2018, 01:55:16 am
Hola PaulleXd

Ahora entiendo tu problema, pero no entiendo tu código, lo veo algo extraño aunque si te funciona supongo que está bien.
Por defecto, Game Maker elimina las virtual Keys cuando cambias de room, entonces las debes declarar de nuevo.

Sugiero en el "Room End Event" de cada objeto tecla (o del objeto padre, porque así lo correrán los hijos también) colocar:
Código: [Seleccionar]
vk_key_set = false
Eso hará que al entrar en la siguiente room, se ejecute de nuevo el Step Event y se genere un nuevo mapeo de teclas.

Encuentro extraño tu código, porque según yo cada tecla (u objeto en tu caso) debe mapear una posición.
Eso significa que cada objeto debe tener Sólo una tecla asignada y no un array completo.

Lo que yo haría, es asignar la tecla a cada objeto individual (en el Creation Code), porque él arrastrará ese valor al resto de las rooms:
Creation code (o creation event si son objetos hijos diferentes)
Código: [Seleccionar]
key = vk_upY en el room_start event le mapeo la posición a la tecla asignada, cada vez que inicies una nueva room, se hará el mapeo de nuevo:
Código: [Seleccionar]
virtual_key_add(x,y,sprite_width,sprite_height,key);Entonces cada vez que pulses la ubicación de ese objeto, GM lo detecta como si pulsaras la tecla "vk_up".

Aunque repito, si tu código está ok y funciona bien, no muevas nada.

Saludos
Muchisimas gracias, llevaba muchos dias con estre problema y me has ahorrado tener que ponder en cada room los controles, de ecgi cini dices tu en el creation code tengo asignado dependiendo de cual objeto pulses realize la simulacion de presionar una tecla:
vk_keys[0]= vk_left;
vk_keys[1]= vk_up;
este es para mover a la esquina izquierda superior, repito muchisimas gracias

 


Desconectado BssString

Respuesta #5 en: Octubre 15, 2018, 05:03:26 pm
Hola PaulleXd

Perfecto, ahora entiendo la utilidad del array, que era para mapear 2 o más teclas al mismo botón.
Que bueno que hayas solucionado el problema

Saludos

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo