Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Ares074 en Agosto 16, 2018, 08:30:09 PM

Título: Crear números usando sprites(Solucionado)
Publicado por: Ares074 en Agosto 16, 2018, 08:30:09 PM
Este es mi problema tengo mi juego tipo RPG  con vista 3d , quiero que cuando un enemigo reciba daño aparezca arriba del enemigo la cantidad de daño que reciba ,para esto cree un objeto que se crea cuando el enemigo recibe daño , digamos que cuando recibe 9 de daño arriba del enemigo aparece el 9 asta ay me funciona bien  ,el problema es como hacer cuando recibe 10 de daño tendría que crear dos objetos con el numero 1 y 0 la cantidad máxima de daño que puede recibir el enemigo es de 100 y no creo que sea bueno crear 100 sprites con los números del 1 al 100 lo que quiero saber es como se le puede hacer para que cuando el enemigo reciba un daño de mas de una cifra el objeto cree los objetos con los sprites del 0 al 9 para formar el numero de daño que recibió
v=global.instancia.max_vida-global.instancia.vida
//if v=0 n=0
if v=1 n=1
if v=2 n=2
if v=3 n=3
if v=4 n=4
if v=5 n=5
if v=6 n=6
if v=7 n=7
if v=8 n=8
if v=9 n=9


Esto es lo que tengo la variable v es la que calcula cuando daño recibe el enemigo y n viene siendo el image_idex para dibujar el sprite
Título: Re:Crear números usando sprites
Publicado por: Marth en Agosto 16, 2018, 09:27:19 PM
¿Estas haciendo que para mostrar el daño utilizas sprites en vez de un número?
Lo mejor es hacer que se muestre el daño como un texto, pero a ese texto le daras un estilo, es decir, tamaño, color de letra, etc.
Va a ser mejor que hacer que para mostrar un daño de 1973 PS uses 4 objetos Numero.
Ademas, es posible crear cajas de texto cuya longitud se agrande cuando mayor sea el número y así muestras bien claro el número sin que se salga.

Mira sobre fuentes y la función draw_rectangle para saber que hacer.
Título: Re:Crear números usando sprites
Publicado por: Ares074 en Agosto 16, 2018, 09:50:23 PM
Hola el problemas que el juego es en 3d si utilizo draw_rectangle el texto se va a mirar sin profundidad o no se si me equivoco,
Te dejo una imagen de como lo tengo hasta ahora a cada enemigo le aparece el daño con diferente profundidad
Título: Re:Crear números usando sprites
Publicado por: Marth en Agosto 16, 2018, 11:15:15 PM
Pues vaya, ya de gráficos 3d no tengo ni idea.
Fijate en otros RPG con gráficos 3d. Por ejemplo, Dragon Quest muestra los daños causados con estreñas a las cuales les pone el daño causado, como muestro en la imagen que adjunto.
Igual puedes crear sprites con marcas como la del ejemplo y pones en ella el daño.
Título: Re:Crear números usando sprites
Publicado por: BssString en Agosto 17, 2018, 04:03:06 AM
Hola Ares074

No sé cuál es la mejor forma de lograr lo que tu intentas hacer, quizás texto como dice Marth es la opción
más óptima.

Pero para hacer lo que quieres de dibujar un sprite por cada dígito se puede hacer de la siguiente manera:
Para que funcione bien, las sub-imágenes del sprite deben ir en orden: 0, 1, 2, ..., hasta el 9.

En el Draw Event
var str_danio = string(84) //primero convertimos el daño a "string". 84 es un ejemplo, tu usas tu variable daño
for (var i=0; i<string_length(str_danio); i+=1) { //un loop para ejecutar el código una vez por cada dígito
var digit = real(string_copy(str_danio,i+1,1)) //recibe el dígito con formato número.
draw_sprite(sprite_numbers,digit,x+16*i,y) //Dibujas el sprite usando de sub-image el dígito leido. Tu seteas las coordenadas, lo importantes es que añadas un offset (en este ejemplo el offset es 16, cada dígito se dibujará con 16 pixeles de separación.
}


Puedes añadir una condición para dibujar el número, como un temporizador o crear un objeto para dibujar el número en la pantalla, etc. Ahí buscas tu manera.

Saludos
Título: Re:Crear números usando sprites(Solucionado)
Publicado por: Ares074 en Agosto 17, 2018, 08:55:20 PM
Hola no conocía todas las funciones del strings ya viendo tu código lo que hice fue esto
str_dano = string(v)
st=string_length(str_dano)

if string_length(str_dano) <=3
   {
   number = string_copy(str_dano, 1,1);
   number1 = string_copy(str_dano, 2,1);
   number2 = string_copy(str_dano, 3,1);
  n= real(number);
  n2= real(number1);  // El image_index para dibujar las texturas 3d
  n3= real(number2); /// convierto el string a numero reeal
   }
   

Ya con esto me funciono