Abril 05, 2011, 05:38:24 PM Ultima modificación: Abril 05, 2011, 07:48:55 PM por unbleached
vereis....mis enemigos llevan un camo de vision....y una variable en el create que se llama alerta=0....la idea es que cuando el protagonista toque el campo de vision del enemigo la variable alerta=0 pasa a alerta=1....hasta aqui todo bien...cuando el prota esta tocando lel campo de vision la variable alerta es 1 y cuando no es 0....pero habia pensado en que cuando el protagonista saliera del campo de vision todavia pasara un rato en que la alerta sigue siendo 1 y al pasar ese rato la alerta seria 0...os dejo el codigo que uso

en el create del enemigo
[gml]alerta=0[/gml]

en el step del enemigo
[gml]if collision_point(soldado_01.x,soldado_01.y,cv2,1,1) {alerta=1} else alarm[0]=100;

if alerta=1 {
mp_potential_settings(1,1,1,1)
mp_potential_step(soldado_01.x,soldado_01.y,1,0)
};[/gml]

en la alarm 0
[gml]alerta=0[/gml]

pero asi no funciona y lo he intetado de mil maneras :'(

No cambia mucho lo que te voy a decir pero, en tu jugador, en evento colision con el objeto campo de vision, pon esto:
[gml]with object0 alarm[0] = 200[/gml]
object0 cambialo por el campo de vision, 200 cambialo por un numero que quieras.
Trata con esto.


sigo sin dar con la solucion.Pero gracias igualmente.

#3 Abril 05, 2011, 07:25:41 PM Ultima modificación: Abril 05, 2011, 07:27:48 PM por licshendu
aqui el problema es que como estas ejecutando
[gml]alarm[0]=100;[/gml]
en el evento step, esto hace que en cada paso se restablesca alarm[0] a 100 y por lo tanto nunca llegara a 0, y por lo tanto a ejecutar el codigo que contiene. Lo que puedes hacer es usar una variable para que solo se ejecute esa accion una vez y ya quedaria
[gml]if collision_point(soldado_01.x,soldado_01.y,cv2,1,1) {alerta=1;aux=false}
else if aux= false{ alarm[0]=100; aux=true}

if alerta=1 {
mp_potential_settings(1,1,1,1)
mp_potential_step(soldado_01.x,soldado_01.y,1,0)
};[/gml]
"Si he llegado a ver más lejos que otros, es porque me subí a hombros de gigantes"  Isaac Newton

#4 Abril 05, 2011, 07:30:31 PM Ultima modificación: Abril 05, 2011, 07:37:30 PM por Metal Mario
No, haber si funciona.
Lo del evento step, cambialo por colision event (con el objeto campo de vision), y quita if collision point. Y ya despues el  resto:
[gml]
alerta=1
if not collision_point(soldado_01.x,soldado_01.y,cv2,1,1)
alarm[0]=100
[/gml]
Y en step dejas esto:
[gml]if alerta=1
{
mp_potential_settings(1,1,1,1)
mp_potential_step(soldado_01.x,soldado_01.y,1,0)
};[/gml]
O al menos en create event pusiste alerta = 0 o algo asi


mil gracias a ls dos...al final lo hice como dice Licshendu...declarando la variable aux en el create.....mil gracias....solucionadisimo  ;)


mil gracias Metal Mario....tus respuestas tambien me ayudaron mucho para entender un poquito mas todo esto  8) 8)