Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Kakashi en Agosto 04, 2010, 06:35:14 AM

Título: Problemas con IA.
Publicado por: Kakashi en Agosto 04, 2010, 06:35:14 AM
Bueno, me surgi? un problema del cu?l ya estoy bastante molesto.

Tengo una IA, todo va bien hasta el momento en que su objetivo est? m?s alto, o por debajo de la IA. No busca una salida hacia su objetivo. S?lo se queda tambaleando en el mismo punto donde se encuentra pero en una coordenada y diferente.

Espero me puedan ayudar a solucionarlo.

Les adjunto un ejemplo.

De antemano muchas gracias.
Título: Re: Problemas con IA.
Publicado por: Fenix97 en Enero 04, 2011, 07:13:17 PM
Vi el ejemplo y era exactamente el problema que tenia yo tambien,  :-[
Podr?as crear  una variable en el evento create que sea cercajugador=0 despues en el evento step puedes poner:
if cercajugador=0 {} entre los corchetes pone todo el codigo de movimiento del enemigo. despues agrega otro codigo mas al evento step:
if distance_to_object(bag_man)=0 {cercajugador=1}

Lo intente probar y todo y el enemigo deja de tambalear al apenas tocar al personaje. espero haber ayudado algo  :-[
Título: Re: Problemas con IA.
Publicado por: lordgeorge en Enero 04, 2011, 09:25:29 PM
Algo no relacionado con lo que pides... hay un peque?o problema con el c?digo. Cuando pones 2 o mas malos todos obedecen a uno solo (no estoy seguro si es el primero, o el ?ltimo creado), se arregla cambiando:[gml]malo.x+=...
malo.y+=...
//Por
x+=...
y+=...[/gml]
Arreglando eso, todos los malos son independientes.
Título: Re: Problemas con IA.
Publicado por: Johann en Enero 05, 2011, 03:58:18 AM
Se me ocurre que no hagas que el "malo" iguale su coordenada x a la del BM.
Solo dejalo muy cerca, no se, unos 8 o 16 px antes.
usa esto:
[gml]if direccion_x=-1 and abs(bag_man.x-x)>16
{...}[/gml]

la linea abs(bag_man.x-x)>16 devuelve la distancia absoluta entre tu objeto personaje y el malo. Si esta es menor al valor dado (en este ejemplo 16)no se movera.