Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: juanbustos en Mayo 11, 2014, 03:05:49 AM

Título: Como hacer que se dispare cada unos segundos?
Publicado por: juanbustos en Mayo 11, 2014, 03:05:49 AM
hola, como puedo hacer que al apretar la barra espaciadora dispare pero que se pueda disparar cada 2 o 3 segundos sino va uno a tras de otro (las balas) y queda muy feo y peor

este es el codigo en "press <Space>"

if sprite_index=sprite_gato_C_radioactivo_der{
instance_create(x,y,obj_bola_de_pelos_C_der)};

if sprite_index=sprite_gato_C_radioactivo_descanzo_der{
instance_create(x,y,obj_bola_de_pelos_C_der)};


if sprite_index=sprite_gato_C_radioactivo_iz
{instance_create(x,y,obj_bola_de_pelos_C_iz)};

if sprite_index=sprite_gato_C_radioactivo_descanzo_iz{
instance_create(x,y,obj_bola_de_pelos_C_iz)};

la bala en este caso seria "bola_de_pelos"

Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: eams1986 en Mayo 11, 2014, 04:10:45 AM
Con alarmas amigo .
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: juanbustos en Mayo 11, 2014, 04:28:12 AM
Cita de: eams1986 en Mayo 11, 2014, 04:10:45 AM
Con alarmas amigo .

pero como, se le puede agregar una alarma al codigo ese?
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: ivn_eze en Mayo 11, 2014, 04:41:18 AM
primero que nada , en el evento create del objeto pon
puedo_disparar = 1

ahora, en el evento alarm0, (si ya existe alarm0 ponlo en el siguiente)  va esto:

puedo_disparar = 1

ahora en el evento de press space tiene que quedar asi:

if puedo_disparar = 1
{
   
    if sprite_index=sprite_gato_C_radioactivo_der{
    instance_create(x,y,obj_bola_de_pelos_C_der)};

    if sprite_index=sprite_gato_C_radioactivo_descanzo_der{
    instance_create(x,y,obj_bola_de_pelos_C_der)};


    if sprite_index=sprite_gato_C_radioactivo_iz
    {instance_create(x,y,obj_bola_de_pelos_C_iz)};

    if sprite_index=sprite_gato_C_radioactivo_descanzo_iz{
    instance_create(x,y,obj_bola_de_pelos_C_iz)};

    puedo_disparar = 0

    alarm0 = 15
     }
   
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: juanbustos en Mayo 11, 2014, 05:02:29 AM
Cita de: ivn_eze en Mayo 11, 2014, 04:41:18 AM
primero que nada , en el evento create del objeto pon
puedo_disparar = 1

ahora, en el evento alarm0, (si ya existe alarm0 ponlo en el siguiente)  va esto:

puedo_disparar = 1

ahora en el evento de press space tiene que quedar asi:

if puedo_disparar = 1
{
   
    if sprite_index=sprite_gato_C_radioactivo_der{
    instance_create(x,y,obj_bola_de_pelos_C_der)};

    if sprite_index=sprite_gato_C_radioactivo_descanzo_der{
    instance_create(x,y,obj_bola_de_pelos_C_der)};


    if sprite_index=sprite_gato_C_radioactivo_iz
    {instance_create(x,y,obj_bola_de_pelos_C_iz)};

    if sprite_index=sprite_gato_C_radioactivo_descanzo_iz{
    instance_create(x,y,obj_bola_de_pelos_C_iz)};

    puedo_disparar = 0

    alarm0 = 15
     }
   


en que evento create, en el del personaje o la bala? y tambien en cual creo la alarma? el evento de press space esta en el personaje
es porque me salta error
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: ivn_eze en Mayo 11, 2014, 05:17:26 AM
todo en el personaje.

si te sigue tirando error prueba quitando el codigo que agrege a press space y reemplazalo por drag and drop, asi

en press space

- if puedo_disparar is equal to 1
- execute a piece of code (el codigo original que tenias en press space, sin lo que yo te agrege)
- set variable puedo_disparar to 0
- set alarm 0 to 15

luego en alarm0 y en create deja lo mismo
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: juanbustos en Mayo 11, 2014, 05:22:18 AM
Cita de: ivn_eze en Mayo 11, 2014, 05:17:26 AM
todo en el personaje.

si te sigue tirando error prueba quitando el codigo que agrege a press space y reemplazalo por drag and drop, asi

en press space

- if puedo_disparar is equal to 1
- execute a piece of code (el codigo original que tenias en press space, sin lo que yo te agrege)
- set variable puedo_disparar to 0
- set alarm 0 to 15

luego en alarm0 y en create deja lo mismo

este es el error


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Key Press Event for <Space> Key
for object obj_gato_C_radioactivo:

Push :: Execution Error - Variable Get -1.puedo_disparar(100002, 0)
at gml_Object_obj_gato_C_radioactivo_KeyPress_32 (line 15) - if puedo_disparar = 1
############################################################################################
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: penumbra en Mayo 11, 2014, 05:29:58 AM
el tutorial de scrooling shooter muestra exactamente cómo hacer lo que pides, disparar cada "n" cantidad de tiempo. El error creo que es porque no está declarada la variable puedo_disparar
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: ivn_eze en Mayo 11, 2014, 05:10:12 PM
Cita de: penumbra en Mayo 11, 2014, 05:29:58 AMEl error creo que es porque no está declarada la variable puedo_disparar

-.- tienes razon, especificamente le dije que la declarara en el evento create
Título: Re:Como hacer que se dispare cada unos segundos?
Publicado por: vampy09 en Mayo 12, 2014, 01:24:20 AM
[user]ivn_eze[/user]:
No se si sabes pero esto es redundante:

if puedo_disparar = 1

Por que?
Por que usar "="   o  "==" en una condicion con una variable que es booleana no es necesario.
Osea es lo mismo que:
if ( puedo_disparar )
Al usar el "= true" estas chequeando si una variable es verdadera pero el valor que tenga asignada la variable la hace true o false.
----------------------------------------------------------------
Una variable boolena es aquella que se le puede asignar solo dos valores:
true ó false.
True se puede representar como 1.
False se puede representar como 0.

En el GM toda variable que tenga un valor <= 0 se considera false y toda variable que tenga un valor mayor a 0 se considera true.

En tu ejemplo  la variable puedo_disparar sera tratada como boolena, osea se la asiganara solo dos valores 1 y 0
Te recomiendo siempre pongas los parentesis en la condiciones.