Hola en este problema estan involucrado 3 objetos:
-"Jugador" que seria el personaje controlado por el usuario
-"Enemigo" Que es un personaje antagonista
-"Linea de vision" que es un objeto con un sprite invisible

Yo pongo al enemigo en el mapa y al sprite linea de vision como se muestra acontinuacion:


Problema:
Cuando comienza el juego el jugador se puede mover libremente por el campo y cuando toca el objeto "Linea de vision" este en su evento de colision cambia la variable global.movimientoC=1; haciendo que el enemigo se mueva hacia el jugador, el problema es que como linea de vision es un objeto estatico (y por lo tanto no se mueve) si el jugador sale de esa linea de vision aunque el enemigo este en frente de el este deja de seguirlo por que no se cumple la colision de linea de vision con jugador.

Solucion
Necesito hacer que cuando el jugador deje de colisionar con el objeto "Linea de vision" la variable global.movimintoC se mantenga en 1 hasta que sea cambiada por otro Set Variable y no por que deje de colisionar.

Espero que se entienda, Gracias y espero su alluda estoy ancioso por pasar toda esta etapa ALPHA para poder subor una Beta definitiva de mi juego :D

#1 Febrero 05, 2014, 08:13:37 AM Ultima modificación: Febrero 05, 2014, 08:36:00 AM por penumbra
dices que cuando  global.movimientoC == 1, el enemigo avanza hacia el jugador. Y que cuando el jugador deja de contactar la línea de visión, el enemigo se para.

Cita de: 7sixerCF en Febrero 05, 2014, 07:25:13 AM
Solucion
Necesito hacer que cuando el jugador deje de colisionar con el objeto "Linea de vision" la variable global.movimintoC se mantenga en 1 hasta que sea cambiada por otro Set Variable y no

pero es que no somos videntes ni magos, si la variable global.movimintoC no se mantiene en 1, es porque tú le estás indicando que no se mantenga en 1, y esto no hay manera de saberlo dónde lo haces (en el objeto enemigo, en el objeto jugador, en el objeto línea de visión, etc) sin mirar el código del proyecto.

El hecho de que el jugador dejar de colisionar con la línea de visión no hace que GM ponga la variable global.movimientoC  en cero automáticamente. Al salir de la colisión, la variable debería mantener su valor en 1. El regreso a 0 sólo pasa si en algún lado (un evento STEP o ALARM) se escribe global.movimientoC = 0, ya sea mediante código o mediante D&D. Y si dices que

Cita de: 7sixerCF en Febrero 05, 2014, 07:25:13 AM
si el jugador sale de esa linea de vision aunque el enemigo este en frente de el este deja de seguirlo

Es porque en algun lado estás probando si hay colisión, y cuando esto es falso, estás haciendo global.movimientoC = 0

De ahí se deduce que revisar si hay colisión sirve para iniciar la persecución, pero no para detenerla. Para detenerla se tendría que usar

a) una alarma que tras un tiempo haga global.movimientoC = 0
b) determinar si el jugador se alejó lo suficiente del enemigo para qué éste deje de seguirlo
c) otro método que se ajuste a cómo quieres que se comporte el enemigo (cosa que ignoramos)

jakaja men muchas gracias yo al principio pensaba que game maker hacia que cuando dejara de colisionar la variable la cambiaba, pero luego revise bien mi proyecto y aviste que en una parte enves de poner un check variable puse un set variable xD bueno mucahs gracias eso es todo, mero problema Humano