Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Jangse en Enero 02, 2014, 09:03:36 PM

Título: ¿Dentro de un evento se puede meter otro?
Publicado por: Jangse en Enero 02, 2014, 09:03:36 PM
Estoy estudiando el event draw. Y por lo que veo, hay cosas que solo funcionan si van dentro de el.
Osea, si en un objeto en su event step o collision hacemos: draw_text no funcionara.

Para que lo haga, hemos de meter esa condición o código en un event draw de ese objeto.

Entonces como se haría (en GML) para que al colisionar un objeto A y uno B, mostrara un mensaje en pantalla (con draw_text).

Yo había pensado poner este código en un event draw del objeto A (No os riais...!!!  :-[):

if (obj_A) ev_collision with (obj_B) then
    draw_text ('lo que sea...');


Que en mi surrealista lógica sería:

Si el objeto A colisiona con el objeto B entonces escribe en pantalla 'lo que sea...'

Pero el editor de Game Maker ni se lo cree...


Es que todavía no le cojo el truco a lo que se puede y no se puede con este lenguaje. Yo tiendo a scriptear con Pascal. Pero bueno, es lo menos. El problema, creo, que no me permite ejecutar ese código.
Título: Re:¿Dentro de un evento se puede meter otro?
Publicado por: penumbra en Enero 02, 2014, 09:52:26 PM
Cita de: Jangse en Enero 02, 2014, 09:03:36 PM

if (obj_A) ev_collision with (obj_B) then
    draw_text ('lo que sea...');


Es que todavía no le cojo el truco a lo que se puede y no se puede con este lenguaje. Yo tiendo a scriptear con Pascal. Pero bueno, es lo menos. El problema, creo, que no me permite ejecutar ese código.

En el evento DRAW se puede meter código que generalmente usarías en STEP, por ejemplo, checar una variable, meter un ciclo for, ifs anidados , etc. Entre menos código "step" vaya en DRAW, mejor. Mucho código "step" en DRAW afectaría el dibujo en pantalla.

Lo que se hace es que usas 'banderas' o 'interruptores' para avisarle a DRAW cuando dibujar algo. Por ejemplo, en el evento de colisión de A contra B, la bandera sería una variable 'choque' la cual pondrías en 1.

en STEP vigilarías la bandera 'choque':
if (choque ==1)   { mensaje = 1; alarm[0] = 120}

En DRAW vigilarías la bandera 'mensaje'
if (mensaje ==1) {draw_text ('lo que sea...');}

En ALARM[0] reseteas la bandera "mensaje" para detener el dibujado de DRAW
mensaje = 0

Esto está a medias. Para completar, hay que usar STEP para revisar cuándo NO hay colisión de A contra B, para que choque = 0, de lo contrario, una vez que choquen A y B, la variable ' choque' siempre sería 1.
Título: Re:¿Dentro de un evento se puede meter otro?
Publicado por: ivn_eze en Enero 03, 2014, 02:53:21 AM
no se mucho de gml, pero se que tienes usar la variable call event para que llame al evento draw.