Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Pejota

Páginas: 1
1
Con el evento draw_sprite del objeto, lo colocas varias veces y en sus propiedades de X y Y cambias las coordenadas segun tu conveniencia
Los siguientes usuarios dieron las gracias a este tema: Pejota

2
Preguntas y respuestas / Re:Alarma en relación a los FPS
« en: Noviembre 05, 2018, 02:00:22 pm »
Debes utilizar la variable fps.
fps_real indica la cantidad máxima de fps a la que puede correr el juego. Normalmente solo se alcanza con una room vacía.
No deberías hacer que la pantalla de carga tarde 5 segundos, podría ser desesperante para el jugador.
Para optimizar el juego utiliza el debugger o activa la barra de consumo de recursos: show_debug_overlay(true);Observa qué parte del juego consume más recursos y trata de optimizar esa parte.
Los siguientes usuarios dieron las gracias a este tema: Pejota

3
Preguntas y respuestas / Re:¿Me ayudáis con esto?
« en: Octubre 28, 2018, 02:27:58 am »
Hola Pejota

En este caso Game Maker permite encadenar los "if" y "else" en una estructura infinita.
La estructura es la siguiente:
if (caso1) { código 1 }
else if (caso2) { código 2 }
else if (caso3) { código 3 }
else { el código cuando no ocurre ninguno de los 3 casos anteriores }

Para lo que necesitas, simplementa añade una cuarta condición indicando simplemente "else" y debería ejecutarse ese código para cuando no se cumple ninguno de los 3 casos anteriores.

Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota

4
Preguntas y respuestas / Re:¿Me ayudáis con esto?
« en: Octubre 27, 2018, 11:57:15 pm »
Buenas Pejota

No sé para qué tantos brackets innecesarios, puedes simplificarlo todo si usas el "and" o "&&" que sirve para enlazar condiciones.
"if (condicion1 = true) and (condicion2 = true) { hace algo }"

Acá he simplificado tu código, que a apreciación mía estaba correcto:

Código: [Seleccionar]
with (RealTortero2) {

if (sprite_index = FSB) && (image_index = 8) {
action_sprite_set(BH0, 0, 1);
}
else if (sprite_index = SDBS) && (image_index = 12) {
action_sprite_set(BH, 0, 1);
}
else if (sprite_index = SBS) && (image_index = 12) {
action_sprite_set(BH, 0, 1);
}

}

Hay algunos casos donde el image_index funciona raro, te recomiendo hacer image_index = 0 cada vez que cambias de sprite para asegurarte que se cumpla la condición.

Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota

5
Preguntas y respuestas / Re:Detener una animación realizada con "draw"
« en: Octubre 20, 2018, 03:25:08 pm »
En ese caso es mejor controlar la animación con una variable a parte.

Create Event
Código: [Seleccionar]
anim = 0
Step Event
Código: [Seleccionar]
if global.vida=0 && anim < 6 {
anim += 1
}

Draw Event
Código: [Seleccionar]
if global.vida=0 {
draw_sprite(spr_KO,anim,960,540);
}

Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota

6
Hola Pejota.

Ahora entiendo mejor tu código, perdón...
En ese caso te sugiero duplicar todo el código para una segunda DS QUEUE.
Ej:
Código: [Seleccionar]
queue1 = ds_queue_create()
queue2 = ds_queue_create()

Crear una segunda ds_queue que guarde la vida del segundo jugador (global.vida2), duplicas el código del Create para que te llene ambas queue, duplicas el step para que se aplique también en la segunda barra de vida y duplicas el código en draw para que se dibuje la segunda barra de vida y duplicas el código de limpieza para que se eliminen las dos DS.

Como dato, no debería afectar que el número sea negativo o positivo, ya que copia el dato tal cual como lo tienes en la variable global.vida, lo importante es que dspués lo dibujes con el signo bien.

Nos comentas si funciona

Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota

7
Hola Pejota
No entiendo tu draw event ni porqué usas -global.vida como valor en la xscale... Pero bueno, te diré la lógica que pensé y tu ves si te sirve, si la aplicas y cómo la dibujas.
Puedes crear una queue en el evento Create del personaje que guarde la vida que él tenía 1 seg atrás.
Código: [Seleccionar]
queue = ds_queue_create()
repeat (room_speed) ds_queue_enqueue(queue,global.vida)
En el STEP EVENT vas añadiendo tu vida actual a esta cola.
Código: [Seleccionar]
ds_queue_dequeue(queue)
ds_queue_enqueue(queue,global.vida)
Finalmente, en el evento draw añades una línea más que dibuje la vida que tenías 1 segundo atrás.
Código: [Seleccionar]
draw_sprite_ext (spr_vida, 0,30, 95,25,1,image_angle,c_black,1);
draw_sprite_ext (spr_vida2, 0,30, 95,-ds_queue_head(queue),1,image_angle,c_red,1); //esta línea dibujará el primer valor de la cola y le hará un color blend a c_red.
draw_sprite_ext (spr_vida2, 0,30, 95,-global.vida,1,image_angle,c_white,1);

Entonces cuando recibas por ejemplo, dos golpes seguido, tu vida bajará normalmente, pero se quedará el sprite dibujado en rojo entre medio indicando la vida que tenías 1 segundo atrás y al cabo de 1 segundo se reducirá hasta llegar a tu vida actual.

No olvides eliminar la cola con ds_queue_destroy una vez que ya no sea necesaria.
Código: [Seleccionar]
if ds_exists(queue,ds_type_queue) ds_queue_destroy(queue)
Saludos
Los siguientes usuarios dieron las gracias a este tema: Pejota

8
Yol lo haria de esta forma:
if keyboard_check_pressed(vk_space)  
   {
    if sprite_index!=sprite_golpe ///si el sprite no es el sprite de golpe
       {
        sprite_index=sprite_golpe /// se cambia al sprite de golpe
        image_speed=0.2 ///dependiendo de la velocidad puede saltarse alguna imagen, asi que hay que ir probando
       }
   }

if sprite_index=sprite_golpe ///si el sprite es golpe
   {
    if image_index=6 {instance_create(x,y,bala)} ///se crea el objeto en la imagen 6
   }

Los siguientes usuarios dieron las gracias a este tema: Pejota

Páginas: 1