Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje publicado por: OmarMakero en Mayo 04, 2020, 05:31:30 PM

Título: Como hacer un texto letra por letra con sprites de font
Publicado por: OmarMakero en Mayo 04, 2020, 05:31:30 PM
Hola, soy nuevo en esta comunidad y tengo una gran duda. Es que estoy haciendo un juego RPG y tengo los sprites de los textos, pero no se como hacerle para que salga el texto con estas letras. He probado algunos scripts que he visto en esta comunidad pero ninguno me es util


Si alguien sabe porfavor digamelo. Gracias de antemano :D  :D
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: Clamud en Mayo 05, 2020, 04:36:55 AM
¿Qué scrips has utilizado?
No quiero repetir algo de lo que has visto
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: OmarMakero en Mayo 05, 2020, 04:55:55 AM
Cita de: Clamud en Mayo 05, 2020, 04:36:55 AM
¿Qué scrips has utilizado?
No quiero repetir algo de lo que has visto
Este es el script que utilizé para dibujar el texto com las sprites:

EDIT:

scr_letras_sprite
[gml]
//Argument0: Texto a escribir
//Argument1:  nombre de la sprite con las letras
for (j=1;j<=string_length(argument0);j+=1)
   {
  tx=string_copy(argument0,j,1);
   if (tx='.') draw_sprite(argument1,26,x-12+j*14,y-14+i*14);
   else if (tx=',') draw_sprite(argument1,27,x-12+j*14,y-14+i*14);
   else if (tx!=' ') draw_sprite(argument1,ord(string_upper(tx))-65,x-12+j*14,y-14+i*14);
   }[/gml]

Luego creo un objeto y hago lo siguiente:

Create:

numero = 1
text[1]='Habia una vez...
text[2]='Un reino llamado Hyrule,';
text[3]='Donde reinaba el mal. Pero un dia...';
text[4]='Apareció un heroe que cargando con su espada logro defender su tierra natal.'
i=0;
alarm[0]=2;


Alarm0:
if i>string_length(texto[numero]) then exit;

// Se imprime una letra más
i+=1;

// Si la tecla Z está presionada, el texto avanzará más rápido.
if keyboard_check(ord("Z")) then alarm[0]=1;
else alarm[0]=2;

//Si el texto llega al final, que se cree el siguiente
if i=string_lenght(texto[numero])
{
alarm[1] = 20
}


Alarm1:
if numero < 4
{
numero +=1
i = 0
alarm[0] = 2
}


Draw:

copia = string_copy(texto[numero],1,i)
texto_sprite = scr_letras_sprite(copia,alfabeto) //Alfabeto es el sprite con las letras y signos
draw_sprite_stretched(spr_dialogos,0,x,y,room_width,160)
draw_text(x+40,y,texto_sprite);


Edite ahora el procedimiento porque se me habian olvidado algunas cosas :-[, pero cuando le doy a previsualizar, se cae el texto.

No se si me expliqué lo suficiente, pero gracias por preguntar :D :D
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: OmarMakero en Mayo 10, 2020, 06:16:09 PM
Hola, he intentado buscar la fuente del problema, pero no la encuentro y yá no puedo más,

Si alguien tiene algún script o alguna idea de como hacer un texto así, porfavor digamelo, me sirve cualquier cosa.

Saludos y gracias de antemano :D :D
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: 3dgeminis en Mayo 11, 2020, 03:22:30 AM
Si queres dibujar texto con sprites tenes la funcion font_add_sprite

https://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/fonts/font_add_sprite.html
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: Clamud en Mayo 11, 2020, 03:48:29 AM
Estaba pensando en proponer font_add_sprite, pero acabo de notar que pusiste el icono de GM8, entonces necesitas una alternativa.
¿Puedes compartir el sprite con las letras?
Supongo que las letras están ordenadas en una cuadrícula o matriz, lo digo por la forma del script. Lo mejor sería que cada letra sea una subimagen en el sprite, recuerdo haber visto scripts que usan ese tipo de sprites, pero no logro encontrarlos. De todas formas podemos intentar escribir uno, no debe ser muy complicado.
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: OmarMakero en Mayo 11, 2020, 03:17:49 PM
Cita de: Clamud en Mayo 11, 2020, 03:48:29 AM
Estaba pensando en proponer font_add_sprite, pero acabo de notar que pusiste el icono de GM8, entonces necesitas una alternativa.
¿Puedes compartir el sprite con las letras?
Supongo que las letras están ordenadas en una cuadrícula o matriz, lo digo por la forma del script. Lo mejor sería que cada letra sea una subimagen en el sprite, recuerdo haber visto scripts que usan ese tipo de sprites, pero no logro encontrarlos. De todas formas podemos intentar escribir uno, no debe ser muy complicado.


El sprite que tengo es como tu dices, esta cada letra en una subimagen, de todas maneras dejo el link de donde saqué las sprites porque no se como subirlas  :-[

https://www.spriters-resource.com/download/6455/ (https://www.spriters-resource.com/download/6455/)

Lo que hice fue añadir un sprite llamado "Alfabeto" y luego le di a "add from strip" para seleccionar las letras, cada una en una subimagen.

Estaré pendiente a las respuestas de ustedes, muchas gracias :D :D
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: Jucarave en Mayo 11, 2020, 06:21:02 PM
font_add_sprite(spr,first,prop,sep)

Debería funcionar también en GM8.1, lo único es que los sprites deben estar en el mismo orden ASCII (http://www.asciitable.com/), puedes hacer uso del parametro first que indica cual carácter ASCII es el primero en el sprite, por ejemplo, si tu primer carácter es espacio " " entonces puedes colocar 32, si es el número 0 entonces colocas 48, si es la A mayuscula coloca 65, etc... revisa http://www.asciitable.com/

así que podrías usarlo así:

[gml]font_add_sprite(sprFuente, 32, true, 2)[/gml]

Aunque debes ajustarlo basado en tu sprite y tamaño de fuente

Saludos

Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: OmarMakero en Mayo 11, 2020, 08:07:16 PM
Cita de: Jucarave en Mayo 11, 2020, 06:21:02 PM
font_add_sprite(spr,first,prop,sep)

Debería funcionar también en GM8.1, lo único es que los sprites deben estar en el mismo orden ASCII (http://www.asciitable.com/), puedes hacer uso del parametro first que indica cual carácter ASCII es el primero en el sprite, por ejemplo, si tu primer carácter es espacio " " entonces puedes colocar 32, si es el número 0 entonces colocas 48, si es la A mayuscula coloca 65, etc... revisa http://www.asciitable.com/

así que podrías usarlo así:

[gml]font_add_sprite(sprFuente, 32, true, 2)[/gml]

Aunque debes ajustarlo basado en tu sprite y tamaño de fuente

Saludos



Hola, hice lo que me explicaste y hasta cierto punto me funciona. Ordené todos las subimagenes acorde a los numeros que contenian el caracter, pero a partir del número 128 (En codigo ASCII sería Ç) en adelante no se dibuja la subimagen correspondiente, cuál es el problema ??? ??? Será que estoy haciendo algo mál y no lo veo ??? ???
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: Jucarave en Mayo 11, 2020, 08:34:36 PM
Interesante, por acá investigando un poco mas del tema, al parecer GM usa ciertas posiciones desactivadas por control... fíjate en esta tabla para armar tu sprite:

https://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/fonts/font_tables.html
Título: Re:Como hacer un texto letra por letra con sprites de font
Publicado por: OmarMakero en Mayo 12, 2020, 08:32:39 PM
Ya he solucionado el problema, muchas gracias a todos los que me respondieron  :love:.

Nos vemos en el proximo post   :):D.