Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: korosu en Enero 06, 2010, 06:15:06 PM

Título: detectar a todos los enemigos
Publicado por: korosu en Enero 06, 2010, 06:15:06 PM
pues el titulo lo dice todo. tengo un misil teledirigido pero solo detecta a un enemigo y si pongo varios tipos mas no les hace ni caso. queria saber como hacer para que valla hacia todos lo enemigos que hay en la view osea k no se marche a la otra punta del mapa a por un enemigo.

si necesitais el codigo o algo solo pedirlo
Título: Re: detectar a todos los enemigos
Publicado por: elviskelley en Enero 06, 2010, 07:35:57 PM
crea un object llamalo objPadre y ese object no llevara codigo alguno.
coloca a todos los enemigos parent del objPadre. ahora usas esto
en el event step
var a;
a=instance_nearest(x,y,objPadre)
if instance_exists(a)
{
if distance_to_point(a.x,a.y)<200
{move_towards_point(a.x,a.y,8)}
else
{direction=(random(360)); speed=10;}
if (x> room_width) or (x<0) or (y<0) or (y>room_height)
{instance_destroy();}
}
primero toma la id de la instancia mas cercana luego se dirije a ella, si hay otra despues de destruir esa se dirijira a ella, y si no hay ninguna, se mueve en direccion aleatoria, y al salir del room, se destruye.
Título: Re: detectar a todos los enemigos
Publicado por: korosu en Enero 06, 2010, 07:40:34 PM
Cita de: elviskelley en Enero 06, 2010, 07:35:57 PM
coloca a todos los enemigos parent del objPadre.

eso no lo entendi
Título: Re: detectar a todos los enemigos
Publicado por: deathmetal en Enero 06, 2010, 08:10:12 PM
crea un objeto llamado parent

que no tenga nada ni sprite ni nada o un sprite cualquiera

luego

abre ada uno de los enemigos y en el editor deobjetos debajo de las casillas de visible sold y persistent te y mask hay unaopcion de parent

selecciona el primer objeto que creamos el objparent
Título: Re: detectar a todos los enemigos
Publicado por: korosu en Enero 06, 2010, 08:29:50 PM
va bien solo k cuando estoy muy lejos de todos los enemigos se bugeam los misiles y enpiezan a moverse en el sitio como locos sin hacer nada
Título: Re: detectar a todos los enemigos
Publicado por: elviskelley en Enero 07, 2010, 03:07:11 AM
var a, b;
a=instance_nearest(x,y,objPadre) //id de la mas cercana
b=instance_furthest(x,y,objPadre) //id de la mas lejana

if instance_exists(a)
{
if distance_to_point(a.x,a.y)<200
{mp_potential_step(a.x,a.y,8,1)}
else
{mp_potential_step(b.x,b.y,8,1)}
if (x> room_width) or (x<0) or (y<0) or (y>room_height)
{instance_destroy();}
}

si estan muy lejos como dices busca a la mas lejana y se dirige a ella.
Título: Re: detectar a todos los enemigos
Publicado por: korosu en Enero 07, 2010, 10:32:07 AM
un ultima cosa. en k parte del codigo podria incluir image_angle=point_direction(x,y,x,y) es por k los misiles son alargados y no kiero k vallan de lado sino de frente

Edito: ya lo puse muchas gracias por la ayuda :D
Título: Re: detectar a todos los enemigos
Publicado por: Herni en Junio 04, 2010, 09:54:44 PM
korosu, me he encontrado en una situaci?n similar y estaba probando el c?digo de ElvisKelley.

?Podr?as compartir en qu? parte metiste tu c?digo?
image_angle=point_direction(x,y,x,y)

Gracias.
- Herni