Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: kaliman777 en Noviembre 23, 2011, 01:31:33 PM

Título: El score es dibujado y sale volando hacia arriba
Publicado por: kaliman777 en Noviembre 23, 2011, 01:31:33 PM
Hola comunidad:

En algunos juegos cada vez que se gana puntos, estos se dibujan y salen flotando hacia arriba y desaparecen antes de salir de la room. Hace m?s de un a?o alguien puso un engine as? y no lo encuentro.

?Me pueden dar alguna pista, por favor o decirme c?mo logro este efecto?

Gracias. ;D
Título: Re: El score se crea se dibuja y sale volando
Publicado por: klys en Noviembre 23, 2011, 02:13:24 PM
Es sencillo, lo eh hecho varias veces.

Vamos a necesitar solo lo siguiente: 1 objecto, una fuente y 2 script

Primer Objecto: (llamalo como quieras)
Creas un cola, esa cola es la que va a evitar que muchos n?meros se acumulen al mismo tiempo y luego no se entienda nada.



Comenzamos asi:
[gml]
// este va en el objecto donde quieras que salgan los numeros
// Create Event (objecto para todos)
colanumeros = s_queque_create();
colacolor = d_queque_create();
desencolando = 0
//fijese que solo le quitamos el global.[/gml]

En otro OBJETO:"o_marq_v" configuras lo siguiente:

[gml]// Create Event:
speed = -5; // esta es la rapidez con la que volara hacia arriba.
alarm[0] = 30; // este es el tiempo que durara con vida. (30steps = 1seg)
text = ""; // el texto que mostrar?
color = 0; // el color del que sera ese texto volador

// draw event
draw_set_font(LaFuenteQueSeaPreferida)
draw_set_color(color)
draw_text(x,y,text) // si te da error con pasarle numeros (que no deberia) lo cambiamos por string(text)

// Alarm[0]
instance_destroy();
[/gml]


Creamos el siguiente script:

marquesiva_voladora
[gml]/*
    marquesina_voladora(text,color)
        text = puede ser un texto, un numero, o ambos concatenados
        color = solo numeros o constantes
          Ejemplo: marquesina_voladora("?SUBISTE AL NIVEL " + string(nivel) + "!",c_yellow)
       
    by klys2007@gmail.com :D
*/

MV = instance_create(x,y,o_marq_v);
MV.text = argument0;
MV.color = argument1;[/gml]

Ahora este script:
encolar_text
[gml]
/*
   encolar_text(text,color)
        text = puede ser un texto, un numero, o ambos concatenados
        color = solo numeros o constantes
          Ejemplo: encolar_text("?SUBISTE AL NIVEL " + string(nivel) + "!",c_yellow)
       
    by klys2007@gmail.com :D
*/

ds_queue_enqueue(colanumeros,argument0)
ds_queue_enqueue(colacolor,argument1)

/*
 Tenga en cuenta que ahi dos variaciones de este script, el primero es el colanumero y el segundo es global.colanumero
 lo llamariamos al global: encolar_textg
*/
[/gml]

Ahora en el objecto donde quieras que se muestren los numeros:

[gml]
// step event
if (ds_queue_size(colanumeros) > 0) and (!desencolando)
{
  desencolando = 1;
  alarm[0] = 1;
}

// Alarm[0] o la que este disponible para tu objeto
marquesina_voladora(ds_queue_dequeue(colanumeros),ds_queue_dequeue(colacolor))
if (ds_queue_size == 0) desencolando = 0;
else alarm[0] = 10; // reaparici?n del numero, debe ser sincronizado con la speed de o_marq_v
[/gml]


Ahora para usarlo todo esto, solo tienes que llamar desde el objecto donde quieras que se muestren los numeros:

[gml]
variable = 200
encolar_text(variable,c_green)
encolar_text("GANASTE!".c_yellow)
encolar_text(-900,c_red)
encolar_text("+1",c_blue)
/*
  Si deseas que los numeros positivos muestren el + podriamos hacer lo siguiente:
  if (variable > 0)
  {
      encolar_text("+" + string(variable),c_green)
  }
  else encolar_text(variable, c_green)
*/
[/gml]


Si lo haces todo bien, te van a gustar los resultados.

Si tambi?n quieres agr?gale un par?metro mas: la fuente.

Espero te sirva :D
Título: Re: El score es dibujado y sale volando hacia arriba
Publicado por: jefferson940 en Noviembre 23, 2011, 02:24:32 PM
Hola, para esto puedes crear un objeto y lo defines asi:
- debes tener en cuenta que para esto es necesario que el objeto que crea a este objeto, le debe dar un puntaje en la variable "valor"

evento create
vspeed=-2;     //esto es para q vaya subiendo
Valor=0;       //aqui guardas el valor que va a mostrar
alarm[0]=20;   //activamos una alarma para q se destruya despues de un tiempo

evento alarm[0]
instance_destroy();       //se destruye a si mismo

evento draw
draw_text(x,y,""+string(valor));  //esto dibuja el valor o el puntaje
//en este evento puedes escoger el tipo de letra, el color, o una fuente que ya tengas creada. usas esto:
draw_set_font(fuente);            //para escoger fuente creada
draw_set_color(c_yellow);         //para escoger color

-algo que me parece mejor visualmente es q este valor no desaparezca de una sino que se vaya desapareciendo poco a poco, lo puedes intentar tambien.

si tienes mas dudas me puedes escribir por mp y te ayudo
Título: Re: El score es dibujado y sale volando hacia arriba
Publicado por: elviskelley en Noviembre 23, 2011, 02:31:28 PM
create
yy=0;
draw
draw_text(x,yy,score)
yy-=1;
Título: Re: El score es dibujado y sale volando hacia arriba
Publicado por: kaliman777 en Noviembre 23, 2011, 06:10:11 PM
Wow!! hay respuestas para todos los gustos. Tratar? de aplicarlas y ver cual es la mejor combinaci?n. Gracias mil.

Clys: tus c?digos son grandiosos, pero tan f?cil de aplicar no creo, podr?as hacerme un miniengine con ellos? Se me confunde la t?cnica XD.

Título: Re: El score es dibujado y sale volando hacia arriba
Publicado por: verdader26 en Noviembre 23, 2011, 11:01:45 PM
Bueno prueba esto,creo que te refieres se vea el score a la parte de arriba:
no te entendi muy bien  :-[
1? crear un objeto
2? clicar en el evento draw del objeto i poner este script
[gml]x=view_xview[0]+20y=view_yview[0]-40 draw_text(x,y,score)[/gml]
(puede que para que te funcione debas cambiar los valores i la x,y)
Título: Re: El score es dibujado y sale volando hacia arriba
Publicado por: MaanuRP en Noviembre 23, 2011, 11:13:28 PM
Te hice un ejemplo en GM8 de lo que quieres, es facil.

Lo unico que yo lo hice con monedas, cuando las tocas van subiendo y cuando llegan al tope (Que yo les puse en el sprite) se destruyen y te dan puntos.

Revisalo y cualquier cosa me preguntas.
Título: Re: El score es dibujado y sale volando hacia arriba
Publicado por: klys en Noviembre 24, 2011, 01:20:11 AM
Disculpa la tardanse, aqui esta tu merecido implementacion...

Cometi varios errores de tipeo en los codigos de arriba, pero en el ejemplo esta todo bien.

con A muestras un numero aleatorio, dejalo presionado para ver mejor su rendimiento en cuanto a gran cantidad de numeros.

Con N muestras un numero dado por ti, y con L muestras un texto escrito por ti.

Todos con diferentes colores.

:)

Por cierto, en cada texto que tengas en draw event de cualquier otro objecto debes ponerle lo siguiente: draw_set_alpha(1)

de esa forma este objecto no interferira con el alpha de todos los textos en pantalla.

http://dl.dropbox.com/u/33603247/Ejemplo%20Marquesina%20Voladora.gmk
Título: Re: El score es dibujado y sale volando hacia arriba
Publicado por: kaliman777 en Noviembre 24, 2011, 02:03:40 PM
Cita de: klys en Noviembre 24, 2011, 01:20:11 AM
Disculpa la tardanse, aqui esta tu merecido implementacion...

Cometi varios errores de tipeo en los codigos de arriba, pero en el ejemplo esta todo bien.

con A muestras un numero aleatorio, dejalo presionado para ver mejor su rendimiento en cuanto a gran cantidad de numeros.

Con N muestras un numero dado por ti, y con L muestras un texto escrito por ti.

Todos con diferentes colores.

:)

Por cierto, en cada texto que tengas en draw event de cualquier otro objecto debes ponerle lo siguiente: draw_set_alpha(1)

de esa forma este objecto no interferira con el alpha de todos los textos en pantalla.

http://dl.dropbox.com/u/33603247/Ejemplo%20Marquesina%20Voladora.gmk
Gracias a todos por ser colaboradores, me sirve este ejemplo.