Buenas a todos de nuevo :)
Estoy pensando como implementar una pequeña IA a los NPC en un juego de vista cenital (tipo Zelda). Quiero que todos se muevan aleatoriamente y que cambien de dirección de vez en cuando, que los malos maten a los buenos y que los buenos huyan de los malos. Para ello usare un evento alarm que cada X tiempo elija una dirección aleatoria y que a su vez revise quien esta cerca, actuando en consecuencia y si se elimina a todos los buenos sea Game Over. Pero no se hacerlo , vi un post anterior (http://www.comunidadgm.org/index.php?topic=17676.0)de como saber quien esta en un radio alrededor del sprite y creo que utilizando eso me podría servir, pero lo que no se hacer es que ande en dirección contraria a donde haya un enemigo (seguramente sea lo mas simple del mundo) con el lenguaje GML, normalmente hago los movimientos de sprites con el editor visual :/
¿Alguien me puede guiar un poco? T_T
Espero hacerme un entendido pronto y ayudar yo algo también, que me siento un preguntón :/
Gracias y saludos ^^
aca esta el link de todos mis ejemplos TODOS... ahi descargate el de IA cenital.
http://sandbox.yoyogames.com/search?q=tutoek
Vale, lo he probado y funciona... PERO solo me funciona completamente si hay un objeto de cada, si pongo 3 enemigos y 2 aldeanos, por ejemplo no responde bien y a veces huyen hacia donde no deberian xD
Tambien otra cosa, no hay forma de hacer que huyan en una de las 3 direcciones contrarias? porque en ese ejemplo solo pone -180
Saludos ^^
Claro que hay otras maneras, pero los ejemplos no son para que uses el código haciendo Copy/Paste, es para obtener de ellos una idea y transformar los códigos para lo que necesitamos.
Para saber como ayudarte debes especificar mas el resultado que deseas obtener.
Copy/paste no hago, modifique bastantes parametros para que unos persiguieran y atacasen, otros huyesen, etc. y funciona bien... pero si pongo varios objetos iguales en la misma room no funciona del todo bien, osea, imaginate que viene un enemigo por cada lado, pues solo reconoce a uno y huye directo hacia el otro en lugar de huir hacia arriba o hacia abajo, que es mas seguro D:
Y lo de huir en una direccion que no sea la contraria solamente, me refiero a que si viene el enemigo a la derecha el otro pueda huir hacia arriba, abajo o a la izq. Quizas con un random que elija entre los grados funcione, pero aun no me puse a ello, tengo que probarlo ^^
Mmm-. Te entiendo, habría que identificar cada enemigo que lo rodea y crear un espacio hueco para el movimiento.
Se me ocurre por colisiones con place_meeting el cual usas para detectar colisiones en un rango con el enemigo y cambien la detección con un for, cuando encuentre un lugar donde no hay enemigos la direccion seria esa a mover.
La orden place meeting es asi, place_meeting(x,y,obj), no? tengo que hacer una por cada direccion? algo como
Citarplace_meeting(x+90,y,obj)
place_meeting(x,y+90,obj)
place_meeting(x-90,y,obj)
place_meeting(x,y-90,obj)
//etc
o la x e y son el rango total y con poner dos puntos x e y calcula el area que abarcan? Y lo del for... se puede meter de forma grafica? Porque solo veo ifs :/ Si no lo muevo todo a codigo T_T
En Step puse esto:
var IDMaton;
IDMaton=collision_circle(x,y,40,objmaton,0,0);
if IDMaton{
direction=point_direction(x,y,IDMaton.x,IDMaton.y)-180
}
y me funciona, saludos