Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: sketch_turner en Enero 12, 2015, 05:53:20 AM

Título: Pregunta sobre IA del enemigo
Publicado por: sketch_turner en Enero 12, 2015, 05:53:20 AM
hola amigos nunca he utilizado en mi juego eso de que mi enemigo me ataque solo si estoy a cierta distancia de el,hasta ahora utilicé lo de perseguir al jugador a sol y a sombra pero para uno de los bosses quiero cambiar el método,la idea es que el enemigo se mantenga estático y que ataque cuando me acerque a el,podrían ayudarme?
Título: Re:Pregunta sobre IA del enemigo
Publicado por: 3dgeminis en Enero 12, 2015, 09:51:38 PM
Leete este articulo:
http://www.thenicerevenge.com/es/tag/finite-state-machines/ (http://www.thenicerevenge.com/es/tag/finite-state-machines/)
Título: Re:Pregunta sobre IA del enemigo
Publicado por: davidte en Enero 13, 2015, 02:19:57 AM
Suponiendo que el jugador es obj_player y el enemygo es obj_enemy

En el step de obj_enemy

if obj_player.x > obj_enemy.x-20
{

//codigo de atacar.

}

Lo que hacemos es preguntar si la la posicion de obj_player es menor a la posicion del enemy más 20 ataca.

Por ejemplo.
Obj_player esta en x = 200
Y
Obj_enemy esta en x = 250

Si obj_player se acerca a obj_enemy la x de obj_player aumenta.

Cuando obj_player este en 230 atacara.

obj_enemy.x-20 es como decir 250 - 20 = 230.

Esto solo vale si obj_player se acerca por delante. Para hacerlo por detras hay que hacer otro if.
asi.

if obj_player.x > obj_enemy.x-20
{}
if obj_player.x < obj_enemy.x+20
{}

Ahora es +20 y con el simbolo cambiado a < (menor que).

Es mejor hacerlo asi, que ponerlo todo en el mismo if con or (||)
Pero para ponerlo todo en el mismo if es asi:

if obj_player.x < obj_enemy.x-20 || obj_player.x < obj_enemy.x+20
{}