Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: WolfIng Entertainment en Abril 30, 2015, 08:22:40 AM

Título: Problemas con los enemigos que me "siguen"
Publicado por: WolfIng Entertainment en Abril 30, 2015, 08:22:40 AM
Buenas:

Como dije en mi Post anterior, tengo un problema con los enemigos que deberían perseguir al personaje y me recomendaron que hiciera un tema nuevo con esta pregunta posteando el srcipt de los enemigos, pero no lo tengo hecho en código, sino en D&D, con un evento Step y dentro de él, un Moving Towards con una variable de movimiento del enemigo.
¿Podríais ayudarme con esto? ¿Hay algún Script sencillito para que me sigan los enemigos?

Muchas Gracias de antemano.
Título: Re:Problemas con los enemigos que me "siguen"
Publicado por: riz en Abril 30, 2015, 09:00:20 AM
Hola Wolf,

Prueba con éste script en el evento step:
(Tienes que reemplazar donde pone "objetivo" con el nombre del objeto al que quieras seguir.)
if point_distance(x,y, objetivo.x, objetivo.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{
move_towards_point(objetivo.x, objetivo.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else speed = 0;// Si la distancia entre el objetivo es menor de 10 pixeles, detendremos el movimiento.


Un saludo tío! Ya nos contarás como te ha ido.
Título: Re:Problemas con los enemigos que me "siguen"
Publicado por: WolfIng Entertainment en Abril 30, 2015, 09:09:40 AM
Cita de: riz en Abril 30, 2015, 09:00:20 AM
Hola Wolf,

Prueba con éste script en el evento step:
(Tienes que reemplazar donde pone "objetivo" con el nombre del objeto al que quieras seguir.)
if point_distance(x,y, objetivo.x, objetivo.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{
move_towards_point(objetivo.x, objetivo.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else speed = 0;// Si la distancia entre el objetivo es menor de 10 pixeles, detendremos el movimiento.


Un saludo tío! Ya nos contarás como te ha ido.

Enorme!, voy a probar, sois rapidisimos por aquí, eh... jajajaja muchisimas gracias riz, ahora una ultima preguntilla, aunque creo que se la respuesta...  :-[ :-[... para que cuando esté a diez pixeles en vez de pararse, reproduzca el sprite de ataque seria con el code, change_sprite, o algo así, ¿verdad?
Muchas Gracias de NUevo
Título: Re:Problemas con los enemigos que me "siguen"
Publicado por: riz en Abril 30, 2015, 09:49:36 AM
No hay de que hombre  ;D

No se sí como yo lo hago es lo más adecuado, pero cuando necesito cambiar un sprite utilizo "sprite_index = nombreDelSprite;" Más o menos la jugada te quedaría así:

if point_distance(x,y, objetivo.x, objetivo.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{
sprite_index = spriteNormal;// Cambia al sprite normal.
move_towards_point(objetivo.x, objetivo.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else sprite_index = spriteDeAtaque;// Cambia el sprite si la distancia es menor de 10 pixeles.
Título: Re:Problemas con los enemigos que me "siguen"
Publicado por: WolfIng Entertainment en Abril 30, 2015, 07:06:20 PM
Cita de: riz en Abril 30, 2015, 09:00:20 AM
Hola Wolf,

Prueba con éste script en el evento step:
(Tienes que reemplazar donde pone "objetivo" con el nombre del objeto al que quieras seguir.)
if point_distance(x,y, objetivo.x, objetivo.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{
move_towards_point(objetivo.x, objetivo.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else speed = 0;// Si la distancia entre el objetivo es menor de 10 pixeles, detendremos el movimiento.


Un saludo tío! Ya nos contarás como te ha ido.

Bueno... funcionar me funciona... xD lo unico es que ahora solo me reconoce un objeto... quiero decir... ¿No se puede usar mas de una vez este código? así es como lo estoy poniendo: (No se si el fallo será mi manera de ponerlo)

if point_distance(x,y, obj_p_pistola.x, obj_p_pistola.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{
move_towards_point(obj_p_pistola.x, obj_p_pistola.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else speed = 0;// Si la distancia entre el objetivo es menor de 10 pixeles, detendremos el movimiento.
       
       
if point_distance(x,y, obj_p_escopeta.x, obj_p_escopeta.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{
move_towards_point(obj_p_escopeta.x, obj_p_escopeta.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else speed = 0;// Si la distancia entre el objetivo es menor de 10 pixeles, detendremos el movimiento.
   
   
if point_distance(x,y, obj_p_metralleta.x, obj_p_metralleta.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{
move_towards_point(obj_p_metralleta.x, obj_p_metralleta.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else speed = 0;// Si la distancia entre el objetivo es menor de 10 pixeles, detendremos el movimiento.

   
if point_distance(x,y, obj_p_francotirador.x, obj_p_francotirador.y) > 10 //Si la distancia entre el enemigo y tu objetivo es de más de 10 pixeles.
{

¿Tendría que poner "else" cada vez que cambio de objeto?
move_towards_point(obj_p_francotirador.x, obj_p_francotirador.y, 5);//Mueve el objeto hacia el objetivo a una velocidad de 5 pixeles por segundo.
}
else speed = 0;// Si la distancia entre el objetivo es menor de 10 pixeles, detendremos el movimiento.
Título: Re:Problemas con los enemigos que me "siguen"
Publicado por: penumbra en Abril 30, 2015, 10:38:32 PM
Cita de: WolfIng Entertainment en Abril 30, 2015, 07:06:20 PM
Bueno... funcionar me funciona... xD lo unico es que ahora solo me reconoce un objeto... quiero decir... ¿No se puede usar mas de una vez este código? así es como lo estoy poniendo:
Sería útil recurrir a un objeto parent. El padre puede tener tantos objetos hijos como sea necesario. Sólo escribes una vez el código refiriéndote al objeto padre, y el comportamiento se aplicará en automático a todos sus hijos (los hijos heredan el código/comportamiento del padre).
Título: Re:Problemas con los enemigos que me "siguen"
Publicado por: WolfIng Entertainment en Mayo 01, 2015, 06:46:51 AM
Cita de: penumbra en Abril 30, 2015, 10:38:32 PM

Sería útil recurrir a un objeto parent.

Vale, creo que lo he pillado, entonces... ¿Creo un objeto parent para asociarlo con los enemigos y dentro del parent creo el código de persecución?. Aparte de eso, he estado leyendo que se puede usar para muchas más cosas, como colisiones, etc... sería todo lo mismo? quiero decir... simplemente es poner el evento en el parent y luego asociarle un hijo al anterior y automaticamente lo hereda el hijo no??

Muchas Gracias como siempre.
Título: Re:Problemas con los enemigos que me "siguen"
Publicado por: damyrodriiguez en Mayo 08, 2015, 05:04:01 AM
 :GM8:
Hola que tal? haber si esto te ayuda! Aqui haré que el enemigo te sigua y pare. pero tambien esquivará todo obstaculo para llegar a ti.

Hagamos asi.
obj_player - El Jugador.
obj_enemy - El Enemigo que se asercará a ti.

COMENZEMOS!!!

En el objeto Enemigo, vamos a "Step Event" abrimos un Execute Code.
y escribe esto:

if distance_to_object(obj_player) <= 256
{
   if distance_to_object(obj_player) <= 16 {speed=0;}
   mp_potential_step(obj_player.x,obj_player.y, AQUI PON LA  SPEED, all)
}

no era esto lo que buscabas, explicame de otra manera, o pon la imagen de que es lo que quieres que haga en el room... :)


Por Pregunta sobre este tema o otras dudas que tengas, te hago saber que me llamo Luiber Extrenzas en Facebook, AGREGAME! yo aqui te dejo el Link, cuando quieras, a las ordenes (Y)

https://www.facebook.com/profile.php?id=100008220635391