Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: J.E.A en Junio 11, 2014, 12:26:41 AM

Título: Como hacer que una letra aparezca en X tiempo? (Solucionado)
Publicado por: J.E.A en Junio 11, 2014, 12:26:41 AM
Hola a todos nuevamente, despues de tanto tiempo inactivo volví a esta gran comunidad, me entere que podría desaparecer, ojala no sea así  :'(
Yendo al grano. Yo estoy usando fuentes pero usando sprites de letras como caracteres.
El problema es que quiero asignar una alarma, por ejemplo, al inicio del juego esta la pantalla toda negra, y quisiera que empiecen a aparecer letras (la palabra "HOLA)" una por una, empezando por la primera que sería la "H", no apenas inicia, si no a unos 2 segundos de haber iniciado la room, no se si estaré usando mal la alarma (yo creo que es eso, pero no se cual es el error) (ACLARO QUE PRIMERO QUIERO LO DE LATRA "H" EL RESTO DESPUÉS SE VERÁ)
:-[

En Create tengo:

fuente = font_add_sprite(fontmario, ord("!"), 1, 1);

En Alarm0 tengo:

alarm[0]=5

En Step tengo:

if alarm[0]

draw_set_font(fuente);


y en Draw tengo

if alarm[0]=5

draw_text(10, 10, "H");


Ojala puedan ayudarme  :-[
Título: Re:Como hacer que una letra aparezca en X tiempo?
Publicado por: penumbra en Junio 11, 2014, 01:00:34 AM
Como lo estás planteando es algo complicado

Si usas draw_text(10, 10, "H");, luego tendrás que usar draw_text(10, 10, "HO") y luego draw_text(10, 10, "HOL") y luego draw_text(10, 10, "HOLA"); también es algo rara la manera en como usas la alarma.

Yo lo hice así:
en [CREATE]
cadena = "hola"
mensaje = ""
alarm[0] = room_speed * 0.6
longitud = string_length(cadena)
pos = 1     
             

cadena es el la palabra o frase final, mensaje es una cadena que en cada evento de alarma se le agrega un caracter para ir formando la frase final. longitud es la longitud en caracteres de la frase final, pos indica la posición actual dentro de cadena

en [ALARM 0]
var muestra;

if (pos <= longitud)
{
    muestra = string_copy(cadena, pos, 1)
    mensaje += muestra
    pos += 1
}

alarm[0] = room_speed * 0.6


en [DRAW]
draw_set_font(fontie)
draw_set_color(c_white)
draw_text(100, 150, mensaje)



[spoiler](http://sia1.subirimagenes.net/img/2014/06/11/140611011417496784.gif)[/spoiler]
Título: Re:Como hacer que una letra aparezca en X tiempo?
Publicado por: J.E.A en Junio 11, 2014, 01:59:48 AM
Cita de: penumbra en Junio 11, 2014, 01:00:34 AM
Como lo estás planteando es algo complicado

Si usas draw_text(10, 10, "H");, luego tendrás que usar draw_text(10, 10, "HO") y luego draw_text(10, 10, "HOL") y luego draw_text(10, 10, "HOLA"); también es algo rara la manera en como usas la alarma.

Yo lo hice así:
en [CREATE]
cadena = "hola"
mensaje = ""
alarm[0] = room_speed * 0.6
longitud = string_length(cadena)
pos = 1     
             

cadena es el la palabra o frase final, mensaje es una cadena que en cada evento de alarma se le agrega un caracter para ir formando la frase final. longitud es la longitud en caracteres de la frase final, pos indica la posición actual dentro de cadena

en [ALARM 0]
var muestra;

if (pos <= longitud)
{
    muestra = string_copy(cadena, pos, 1)
    mensaje += muestra
    pos += 1
}

alarm[0] = room_speed * 0.6


en [DRAW]
draw_set_font(fontie)
draw_set_color(c_white)
draw_text(100, 150, mensaje)



[spoiler](http://sia1.subirimagenes.net/img/2014/06/11/140611011417496784.gif)[/spoiler]

GracIas Penumbra, funciona tal cual lo quería, pero el problema es que me usa una fuente por defecto, y lo que yo quiero es hacerlo con una fuente conformada por sprites  XD
Título: Re:Como hacer que una letra aparezca en X tiempo?
Publicado por: penumbra en Junio 11, 2014, 07:04:16 AM
sólo tienes que declarar tu sprite font en CREATE y especificarla en DRAW en lugar de "fontie".
Título: Re:Como hacer que una letra aparezca en X tiempo?
Publicado por: empardopo en Junio 11, 2014, 07:13:29 AM
Muy interesante.
J.E.A, a qué te refieres con lo de un font de Sprite por letras? Te has creado un sprite para cada letra del teclado?

Penumbra, muy chulo mostrar el ejemplo en un spoiler. ¿Qué enlazas un fichero de video?

Gracias
Título: Re:Como hacer que una letra aparezca en X tiempo?
Publicado por: penumbra en Junio 11, 2014, 07:34:22 AM
Cita de: empardopo en Junio 11, 2014, 07:13:29 AM
Muy interesante.
J.E.A, a qué te refieres con lo de un font de Sprite por letras? Te has creado un sprite para cada letra del teclado?
Penumbra, muy chulo mostrar el ejemplo en un spoiler. ¿Qué enlazas un fichero de video?
Gracias

Graciasm es sólo un gif animado  8). Me voy a permitir responder lo de la sprite font:  es un sprite con muchas subimágenes en un orden específico:

(http://sia1.subirimagenes.net/img/2014/06/11/140611072755511580.gif)

siguiendo la numeración de la tabla de caracteres ANSI. En GM usas la función font_add_sprite() para crear una fuente que luego puedas usar. Son útiles para cuando quieres mostrar en tu juego  un tipo de fuente en específico, sin preocuparte de si el usuario tiene o no esa fuente instalada en su sistema, también a la fuente se le pueden agregar efectos como borde, sombra, gradiente, etc, ya que se trata en realidad de una imagen, lo malo es que es tedioso hacer el juego de caracteres a mano, aunque hay programas precisamente para hacer font sprites de manera automática.
Título: Re:Como hacer que una letra aparezca en X tiempo?
Publicado por: empardopo en Junio 11, 2014, 08:07:07 AM
Muchas gracias por la explicación.
Muy interesante y la verdad que potente.

Thanks!
Título: Re:Como hacer que una letra aparezca en X tiempo?
Publicado por: J.E.A en Junio 11, 2014, 04:14:46 PM
Cita de: penumbra en Junio 11, 2014, 07:04:16 AM
sólo tienes que declarar tu sprite font en CREATE y especificarla en DRAW en lugar de "fontie".

Gracias Penumbra, ahora sí salio tal cual quería! Saludos! y gracias nuevamente!

Pongo como quedo todo para el que quiera saber

En Create quedo así:

cadena = "HOLA"
mensaje = ""
alarm[0] = room_speed * 0.6
longitud = string_length(cadena)
pos = 1       
fuente = font_add_sprite(sprite6, ord("!"), 1, 1);



En alarm:

var muestra;

if (pos <= longitud)
{
    muestra = string_copy(cadena, pos, 1)
    mensaje += muestra
    pos += 1
}

alarm[0] = room_speed * 0.6


Y en draw:

draw_set_font(fuente)
draw_set_color(c_white)
draw_text(100, 150, mensaje)




Como ven, puse fuente en "draw_set_font(fuente)" que es la fuente que uso como sprites, así como explico mas arriba Penumbra. Ahora sí ya pongo el tema como solucionado. :D
Título: Re:Como hacer que una letra aparezca en X tiempo? (Solucionado)
Publicado por: empardopo en Junio 11, 2014, 07:16:06 PM
Gracias por compartir el resultado final.
Saludos