Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: josevi77 en Diciembre 15, 2015, 09:40:42 PM

Título: IA enemiga....
Publicado por: josevi77 en Diciembre 15, 2015, 09:40:42 PM
 Buenas, estoy liado con la ia de los enemigos de un proyecto  ???

Lo que he conseguido es que cuando el obj_jugador se acerque a cierta distancia del obj_enemigo este le dispare...vale eso ok.

Pero lo que quiero que si tiene entre los dos el obj_muro no lo vea y no le dispare y si el obj_jugador salta el muro entonces ya lo ve y le dispara.

Me podeis decir por donde tirar?.

Yo he tirado por collision_line y a base de if....

Gracias.
Título: Re:IA enemiga....
Publicado por: Marron121 en Diciembre 15, 2015, 10:10:16 PM
Supongo que con una variable que te diga si el protagonista está detrás de un muro o no seria suficiente, no?

Del estilo de
if protadetrasdemuro=0
{
blablabla //que pueda disparar
}

if protadetrasdemuro=1
{
blablabla //que no pueda disparar
}
Título: Re:IA enemiga....
Publicado por: josevi77 en Diciembre 15, 2015, 10:54:32 PM
Gracias Marron21 por responder, tendria que saber en que lado esta del muro, pero en relacion al enemigo.

Hay alguna manera que la funcion collision_line sepa con que choca primero?.
Título: Re:IA enemiga....
Publicado por: bygdle en Diciembre 15, 2015, 11:02:27 PM
Si es en vista cenital supongo que puedes usar esto:
[gml]
//Objeto enemigo
if !collision_line(x,y,jugador.x,jugador.y,false,muro)
{
   //código para mirar al jugador
}
[/gml]

Si es en vista de plataformas, no sé si pueda servirte igual, jamás lo he probado  :-[
Título: Re:IA enemiga....
Publicado por: josevi77 en Diciembre 15, 2015, 11:10:52 PM
Gracias!! Me diste el camino :)
Título: Re:IA enemiga.... (solucionado)
Publicado por: josevi77 en Diciembre 16, 2015, 07:01:11 PM
Bueno al final le di en el clavo!! XD

if obj_heroe.x < x {

               if  !collision_line (x,y,obj_heroe.x,y-50,obj_pared,false,false) and collision_line (x,y,x-400,y,obj_heroe,false,false){                         
               
                                    atacar = true
                                    }
                                    else {
                                    atacar = false
                                    }
                         }
       if obj_heroe.x > x {

               if  !collision_line (x,y,obj_heroe.x,y-50,obj_pared,false,false) and collision_line (x,y,x+400,y,obj_heroe,false,false){                         
               
                                    atacar = true
                                    }
                                    else {
                                    atacar = false
                                    }
                                 }



Gracias!!
P.d: tendra webis que no soy capaz de enviar el codigo como lo poneis vosotros :(
Título: Re:IA enemiga....
Publicado por: Clamud en Diciembre 16, 2015, 07:18:52 PM
Aquí se muestran las etiquetas para hacer posts más bonitos:
http://www.comunidadgm.org/propuestas-y-soporte/bbcode/ (http://www.comunidadgm.org/propuestas-y-soporte/bbcode/)