Mostrar Mensajes

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

Mensajes - Pejota

16
Preguntas y respuestas / Hacer una pantalla de carga
Octubre 05, 2018, 03:34:06 AM
Buenas!

Veréis, estoy haciendo un juego con aspecto "profesional". A 1080p, usando DragonBones, Photoshop, etc.
Total... la cosa pinta bien, pero ha llegado un punto en el que al entrar en un room... los primeros 5-10 segundos todo va relentizado.

En principio no hay problema con eso, me parece lo normal, pero ahora toca hacer un poco de "magia" para el público, y esconder el contenido del room hasta que todo vaya fluido con una pantalla de carga.

No tengo ni idea de como hacer una... Quizás consiga facilmente poner una con un temporizador del tiempo que "creo" que será necesario y listo; Pero eso me parece "un parche" poco fiable, porque según el hardware en el que se esté ejecutando, ese tiempo aumentará o disminuirá.

Entonces mi pregunta es, si alguien sabría hacer que la pantalla de carga desaparezca cuando el room contenga todos los objetos requeridos, o mejor aún... cuando la room consiga llegar a 30fps (que es la velocidad a la que tengo el proyecto)

Un saludo
17
Cita de: BssString en Julio 19, 2018, 06:30:34 PM
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:
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

¡¡Solucionado!!
El error lo estaba dando una tontería...
Ya había probado a hacer lo que me pusiste de "queue2", pero nada funcionaba. Al final, harto de que me diese error comprobé que todo estuviera en obj_vida2 como en obj_vida1, y había una pequeña diferente... En Create tengo el código dividido en dos hojas de código, la que tiene la variable "global.vida", y la que tiene la nueva variable para la queue que me proporcionaste, y en el obj_vida2 tenía la variable de la queue antes que la variable "global.vida2", y eso generaba el error.  XD

Muchas gracias por todo, quedó genial  :)
18
Cita de: BssString en Julio 19, 2018, 04:07:59 PM
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.
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.
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.
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.
if ds_exists(queue,ds_type_queue) ds_queue_destroy(queue)

Saludos

Perdón por no ser más espefícico. Las barras de vida las controlo con objetos dedicados a ello: obj_vidaP1 y obj_vidaP2, en Create tienen:

global.vida = 25; 

global.vida2 = -25;

Correspondientemente, para que la barra de la izquierda se vaya reduciendo hacia la izquierda, y la de la derecha hacia la derecha como en cualquier juego de lucha

y en el evento Draw de estos objetos, tengo lo que ya dije arriba.

Igualmente utilicé lo que me dijiste en estos objetos y funcionó! Mil gracias!... Bueno, funcionó en el obj_vidaP1, en el obj_vidaP2 no. Quizás porque funciona en número negativos? No sé que ocurre. Tal como está salta un error, y si en el evento Create pongo:
queue = ds_queue_create()
repeat (-room_speed) ds_queue_enqueue(queue,global.vida)

añadiéndole "-" al room_speed, deja de dar error, pero la barra roja se actualiza casi a la vez que la de vida. Estoy probando a trastear el código para solucionarlo, pero no lo consigo.
19
Buenas a todos!

Estoy haciendo un juego de lucha, y tengo el código que veréis a continuación para realizar las barras de vida:

draw_sprite_ext (spr_vida, 0,30, 95,25,1,image_angle,c_black,1);
draw_sprite_ext (spr_vida2, 0,30, 95,-global.vida,1,image_angle,c_white,1);

Hay una barra blanca, que determina la vida que le queda a los personajes, y es la que va descendiendo en base a "global.vida"
y debajo tengo una negra, que no se modifica, a modo de marco para esta barra de vida, para que siempre se pueda ver cuanto era la vida máxima.

Ahora quiero poner una barra roja entre estas dos, que al igual que la blanca, descienda en base a "global.vida" pero con un segundo de retardo, así provocaré el efecto que tienen muchos juegos de lucha, el cual cuando un golpe impacta, durante un poco de tiempo puedes comprobar cuanta cantidad de vida quitó ese golpe, porque queda un rastro rojo temporal marcando la vida que tenía antes el que recibió el golpe, y la que le queda ahora.

Resumo por si he liado a alguien con tanta explicación:

Tengo este código para dibujar una barra de vida:
draw_sprite_ext (spr_vida2, 0,30, 95,-global.vida,1,image_angle,c_white,1);

y quiero dibujar otra en rojo, que haga lo mismo, pero tarde un segundo en actualizar los cambios de "global.vida"

Gracias por adelantado,
Un saludo
20
Cita de: 3dgeminis en Julio 12, 2018, 07:36:11 PM
Yol lo haria de esta forma:
[gml]
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
   }

[/gml]

Gracias! Me ha servido :)
21
Buenas! Llevo mucho sin pasarme por aquí, pero he vuelto a las andadas y como siempre, con un montón de problemas xD

Veamos... Tengo un personaje que realiza una animación de pegar cuando pulso un botón, y quiero que en el sprite 6 de esta animación, aparezca mi objeto hitbox en un determinado lugar. El personaje no se mueve, así que el lugar siempre será el mismo. Facilito, pero no para mi XD

He probado con:

if image_index = 6
{
instance_create (x+405, y-70, HBF)
}

Dentro de la caja de código de cuando tiene lugar la animación, pero ni aparece.

Después he probado a inventarme la programación (es un deporte xD) y he hecho esto:

if FSF image_index = 8
{
instance_create (x+405, y-70, HBF)
}

Añadiendo "FSF" que es el nombre de mi animación al "image_index"; Y el hitbox aparece! pero es raro, porque es como si apareciera "en lugar" de los sprites que tocan en ese momento... así que me lo estropea todo.

Si sabéis de algún método que funcione. Os lo agradecería mucho :)

Un saludo
22
Juegos completos / Re:Karabreak it! [Android][Free]
Octubre 07, 2014, 10:30:18 PM
Muchas gracias :)
23
Juegos completos / Karabreak it! [Android][Free]
Octubre 06, 2014, 11:21:05 PM

Karabreak it!

Otro

GM: Studio

Conviértete en un karateka destruye tablas, sube de rango hasta conseguir el cinturón negro y reta a los demás jugadores en el ranking online.





http://play.google.com/store/apps/details?id=com.PJ_GAMES.Karabreak_it


http://youtu.be/3r3TiKdZYmI
24
Preguntas y respuestas / Re:Spawner de objetos [Resuelto]
Septiembre 19, 2014, 12:45:23 AM
Sí, por eso te dije que ese sí era el suyo :D
Va genial, gracias :)
25
Preguntas y respuestas / Re:Spawner de objetos
Septiembre 17, 2014, 11:33:21 PM
¡Ese sí que es el suyo! :D
26
Preguntas y respuestas / Re:Spawner de objetos
Septiembre 17, 2014, 12:00:31 PM
Gracias Ocarina, pero no sirve porque cuando "x" es -66, solo debe emitir "Tabla_Izq" y cuando es 1320 solo debe emitir "Tabla_Der".

Al final he optado por cojer el código de Arcadian, separarlo en dos y hacer que funcionen por turnos, y se ha quedado guay :)
... pero si conseguís meterlo en un solo código ya sería genial, dado que con este "parche" que he realizado, la situación está forzada a que salgan una vez de un lado y la siguiente vez del otro, y la aleatoriedad máxima en este caso es importante.
27
Preguntas y respuestas / Re:Spawner de objetos
Septiembre 16, 2014, 10:30:01 PM
Ah, vale xD
Pero con el código que has planteado, lo que consigues es emitir varios objetos desde un mismo punto, y yo quiero conseguir que emita objetos desde varios puntos concretos.
28
Preguntas y respuestas / Re:Spawner de objetos
Septiembre 16, 2014, 02:21:43 PM
Muchas gracias,
funcionar funciona, pero quiero evitar escribir más de un "instance_create" para que los saque de uno en uno, pero si no lo consigo, quizás pueda adaptar este a lo que necesito.
29
Preguntas y respuestas / Spawner de objetos [Resuelto]
Septiembre 16, 2014, 01:23:09 PM
Buenas, estoy intentando hacer un único spawner para que emita objetos en varios puntos concretos, pero me da error de código y no sé como solucionarlo.

Este es el código:

instance_create(
choose(
(-66,286,Tabla_Izq),
(-66,396,Tabla_Izq),
(-66,506,Tabla_Izq),
(1320,286,Tabla_Der),
(1320,396,Tabla_Der),
(1320,506,Tabla_Der)))


Si sabéis porqué falla u otra manera de hacerlo, sería genial :)
¡Un saludo!
30
Muchas gracias por vuestro apoyo :)
Venus, sí, habría sido curioso xD pero aún así no es nada fácil ;)
Vampirako, ya, soy cosciente, pero me estoy dando cuenta de que ser capaz de hacérselo llegar a todo el mundo es incluso más importante que el juego en sí u.u
Me he hecho un Twitter que estoy intentando difundir y la página sobre videojuegos llamada Blogocio, como usuario de toda la vida que soy, me ha apoyado haciendo una ficha de mi juego en su página, una noticia e incluso un torneo que estuvo muy interesante.

Aún así me está costando horrores hacerme notar, pero seguiré esforzándome  8)