Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Tigerito019 en Noviembre 29, 2015, 04:36:52 AM

Título: Dibujar un texto sin usar el evento Draw
Publicado por: Tigerito019 en Noviembre 29, 2015, 04:36:52 AM
Saludos, resulta que quiero que cuando el personaje colisione con un objeto aparezca un texto, ya he intentado poner el código pero no aparece ningún texto. Luego probé colocando el código en un evento draw y si aparece. Entonces, como hago para que el texto aparezca sin usar el evento draw? O sea, que aparezca desde que el personaje colisione.

De antemano, gracias.
Título: Re:Dibujar un texto sin usar el evento Draw
Publicado por: bygdle en Noviembre 29, 2015, 06:12:31 AM
Primero, es imposible dibujar fuera de Draw.
Segundo, sólo necesitas crear una variable que tenga un valor que cuando colisione, y luego condicionar este valor en el draw.
Evento step
[Gml]
if place_meeting(x,y,objeto);
colision = true;
else
colision = false;
[/gml]

Draw
[gml]
if colision == true
draw_text(x,y,str);
[/gml]

No olvides definir la variable en create
Título: Re:Dibujar un texto sin usar el evento Draw
Publicado por: kostra en Noviembre 29, 2015, 01:54:33 PM
tampoco olvides que si usas el evento draw, el sprite se pierde, para que esto no pase al principio del evento draw pones: draw_self();
Título: Re:Dibujar un texto sin usar el evento Draw
Publicado por: Tigerito019 en Noviembre 29, 2015, 03:20:26 PM
Cita de: NiuWeb en Noviembre 29, 2015, 06:12:31 AM
Primero, es imposible dibujar fuera de Draw.
Segundo, sólo necesitas crear una variable que tenga un valor que cuando colisione, y luego condicionar este valor en el draw.
Evento step
[Gml]
if place_meeting(x,y,objeto);
colision = true;
else
colision = false;
[/gml]

Draw
[gml]
if colision == true
draw_text(x,y,str);
[/gml]

No olvides definir la variable en create

Gracias por la recomendacióon, pero no me funcionó, tal vez lo esté usando mal o no sé. Podrias explicarme más detalladamente donde colocar cada acción?
Y perdón por la molestia pero soy nuevo en esto. Y a qué te refieres con definir la variable en Create?
Título: Re:Dibujar un texto sin usar el evento Draw
Publicado por: Clamud en Noviembre 29, 2015, 03:35:44 PM
Técnicamente, si es posible dibujar en la pantalla fuera del evento Draw, pero se borra cuando GameMaker redibuja la pantalla (dibujando los backgrounds y ejecutando los eventos Draw). Pero en este caso es mejor usar una variable, como sugirió NiuWeb.

Es necesario definir la variable colision en el evento Create para que no lance un error al querer compararla, simplemente escribe esto:
[gml]
//Evento Create
colision = false;
[/gml]
después en el evento Collision cambias el valor de la variable
[gml]
//Evento Collision
colision = true;
[/gml]
y por último en el evento Draw se dibuja el texto dependiendo del valor de colision
[gml]
draw_self();
if( colision ) draw_text( x,y, "Mi texto" );
colision = false;
[/gml]
se usa draw_self para que se dibuje también el sprite del objeto.