Hola a todos, voy a tratar de ser lo m?s claro posible de lo que trato que hacer; mi nivel en game maker a?n es bajo as? que si no entiendo algo, paciencia jeje...

Estoy haciendo un enemigo en mi juego que se mueve en una grilla 32x32 (es para el manejo de diversos objetos y no deseo cambiar eso) y quiero que se mueva libremente en el nivel esquivando las trampas y buscando a nuestro personaje para atraparlo (al colisionar con el mismo, perdemos una vida...eso ya esta echo).

Por ejemplo: Se mueve hacia abajo, y si a 64 pixeles de distancia hay un rayo que lo destruye, entonces cambia de direcci?n, y busca otro camino para alcanzarnos. Si se mueve hacia la derecha y a 64 pixeles a la derecha hay un pozo, cambia de direcci?n..etc?tera.

He visto tutoriales para hacer un comportamiento parecido a los fanstasmas de pac-man...pero es para hacer si o si juegos pac-man.

Gracias por la paciencia y la ayuda.

Pues para checar la distancia puedes usar distance_to_object, te dejo un c?digo para que cambie de direcci?n si hay un objeto en la misma direcci?n que tu y a menos de 64 pixels, no se si funcione por que no mostraste tus codigos de movimiento.


[gml]while(distance_to_object(objeto)<=64 && point_direction(x,y,objeto.x,objeto.y)==direction){
direction=choose(0,90,180,270)}[/gml]

Aca dejo algo que hice para que vean lo que necesito:

http://www.gamefront.com/files/20069988/CodeMan+-+Prueba+0.gmk


Saludos y gracias

PD: Es muy sencillo y obviamente no tiene ninguna IA, ya que es ahi donde tengo problemas....

Pues usa el c?digo que te pase hace rato, solo ponlo en el evento step de tu enemigo  8).

El problema es que se quedan dando vueltas simplemente y no buscan caminos alternativos para alcanzar al jugador.

La idea es que si aparece una trampa en su camino (como la de los pozos) busquen un camino distinto para atraparnos.

Si lo que quieres es que te encuentre f?cilmente, te recomiendo usar un buen pathfinding, como este http://gmc.yoyogames.com/index.php?showtopic=286571

No es que me encuentre facilmente, sino que vaya moviendose por el mapa esquivando las trampas y, si es posible, cuando se acerque el jugador en cierta ?rea, trate de atraparlo (no que facilmente lo encuentre, sino lo haria muy facil).

Igualmente, durante la semana ver? si puedo usar ese ejemplo y adaptarlo al juego que estoy haciendo (es lo ?ltimo que me falta para despues avanzar de forma fluida)

Cualquier ayuda bienvenida, gracias.

Ah me acabo de dar cuenta de que el c?digo que te di hace rato estaba mal mejor usa este, no resolvera el problema de que busque al personaje pero al menos ya no chocara contra las trampas .
[gml]while(collision_line(x+16,y+16,x+16+lengthdir_x(26,direction),y+16+lengthdir_y(26,direction),ob_pozo,0,1)){
direction=choose(0,90,180,270)}
[/gml]
va en step

Funciona bien..tiene algunos errores con que se superpone un poco sobre los pozos, pero ver? si puedo arreglarlo durante la semana.

Si alguno tiene una solucion con lo que busque al jugador...agradecido.


si le a?ades move_snap al final se arregla (creo).
[gml]while(collision_line(x+16,y+16,x+16+lengthdir_x(26,direction),y+16+lengthdir_y(26,direction),ob_pozo,0,1)){
direction=choose(0,90,180,270) move_snap(32,32)}
[/gml]
Yo te podr?a ayudar con lo de que te medio persiga pero la verdad es algo complicado y al menos a mi me tomar?a tiempo (que no tengo en abundancia).

[gml]mp_potential_step(Jugador.x,obj_Jugador.y,4,false)[/gml]
4, indica la velocidad a la que se mueve
false, es para que choque solo con los solidos, true, para que choque con cualquier objeto

Y si queres que se alinee (Haci se dice?), usa move_snap

:)

Bien, muchas gracias.

Para hacer que se mueva libremente por el mapa en una grilla 32x32...como har?a?