Estoy haciendo un juego TPS 2D de un jugador, y como todo buen juego de su género hay una buena "inteligencia artificial" que hace que los enemigos salten plataformas, caminen autónomamente y te ataquen como buenos contrincantes. En mi juego usas una tortuga-ametralladora, algo totalmente normal. Los enemigos son abejas con pistolas (también muy normal), su sistema de inteligencia artificial (muy entre comillas) consta de lo siguiente: tienen gravedad y chocan con el suelo, lo básico. Persiguen al jugador a un paso no muy veloz para que puedas huir con facilidad; hay pequeñas plataformas que el jugador puede trepar con facilidad, al igual que el enemigo gracias a un sistema en el que hay un bloque oculto que lo hace saltar. la presencia del problema se hace notar cuando, extrañamente, el enemigo al terminar el path se teletransporta a x=0,y=0 (Esquina superior izquierda), y acto seguido repite el path (salta de nuevo) y cae al suelo, como si nada hubiera pasado. ¿Cómo puedo solucionar este extraño error?

Retiré los views del room para que se puediera apreciar como esa abeja tonta de la pistola se teletransporta brujílmente hasta allá arribota  :'( :'( :'(
Un día estaba yo feliz comiendo pastel y me acordé que el pastel sabía a pastel, y tras reflexionarlo un poco deduje que la peculiar reacción que este producía en mí no era del todo de mi agrado. Entonces pensé: ¿Por qué estoy comiendo pastel, si es que no me gusta su áspero sabor? Y encontré la respuesta: se llamaba pay. El pay, salve el gran poderoso pay, quien guía mi vida para evitar que aquel cruel y dañino pastel me atrape en sus enguyentes brazos de chocolate; su sabor, exquisito, podía sentir sus capas de crema y frutas mezclarse con mi saliva en una danza espiritual e inspiradora.

lo primero de todo, no te recomiendo en absoluto usar path en los enemigos, en especial si pretendes que siga al jugador, y por otro lado, lo que hace tu abeja con pistola, debe ser un mal uso de tu path, te recomiendo que repases esta página si insistes en usar paths: http://www.dazlog.com/manual_GM/Paths_GML.htm
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Cita de: kostra en Noviembre 15, 2014, 03:33:40 AM
lo primero de todo, no te recomiendo en absoluto usar path en los enemigos, en especial si pretendes que siga al jugador, y por otro lado, lo que hace tu abeja con pistola, debe ser un mal uso de tu path, te recomiendo que repases esta página si insistes en usar paths: http://www.dazlog.com/manual_GM/Paths_GML.htm
¿Cómo me recomiendas crear la inteligencia artificial? Gracias.
Un día estaba yo feliz comiendo pastel y me acordé que el pastel sabía a pastel, y tras reflexionarlo un poco deduje que la peculiar reacción que este producía en mí no era del todo de mi agrado. Entonces pensé: ¿Por qué estoy comiendo pastel, si es que no me gusta su áspero sabor? Y encontré la respuesta: se llamaba pay. El pay, salve el gran poderoso pay, quien guía mi vida para evitar que aquel cruel y dañino pastel me atrape en sus enguyentes brazos de chocolate; su sabor, exquisito, podía sentir sus capas de crema y frutas mezclarse con mi saliva en una danza espiritual e inspiradora.

Bueno La IA Es Mi Especialidad si tu juego usa bloque y quieres que los salten al momente de chocar con ellos y una buena ia seria mas o menos asi
Primero Hase El codigo de Gravedad o si ya lo tienes no
OJO Todo esto va en el step

gravity_direction=270;
if (place_free(x,y+1))gravity=0.8
else
gravity=0;

Hases otro codo en el step Que Sera la IA

Aqui Pones La Velocidad De la Abeja
vel=2.5;

//Common1 Aqui Dice que seguira al jugador por ejemplo Zoro y dice tambien que lo seguira a 350 steps si bajas el 350 a 250 sera meno distancia de seguimiento
if(distance_to_object(Zoro)<350)
{
  if(x<Zoro.x){
        hspeed=vel;
        //Aqui Dice la Imagen Que Usa Para Caminar
        sprite_index=FriezaWalk; image_xscale=1; image_speed=.3;
        }
    //Aqui Camina En reversa
    if(x>Zoro.x){
        hspeed=-vel;
       //El image_xscale Significa Que el sprite sera volteado horizontal Siginifica del otro Lado
        sprite_index=FriezaWalk; image_xscale=-1; image_speed=.3;
        }
}

// Aqui Es Cuando Da El Salto__ Donde Dice bloque pon el objecto solido y vspeed es cuando quieres que salte puede modificar
if(place_meeting(x+48,y,Bloque) and hspeed=vel ){
    vspeed=-11;
    }
if(place_meeting(x-48,y,Bloque) and hspeed=-vel ){
    vspeed=-11;
    }


//Esto Es Si No tienes un codigo para que dispare
//Enemigo Ataca   
if distance_to_object(Zoro)<150
{
//El Random Es PARA Que no dispare todas las balas de un disparo tu puedes poner variables
if(random(30)<=1)
{
if(instance_exists(self)) && Frieza.image_xscale=1 {instance_create(x+70,y+10,BalaMarine)}
if(instance_exists(self)) && Frieza.image_xscale=-1 {instance_create(x-70,y+10,BalaMarine)}
golpeado=true;
image_speed=.4;
sprite_index=FriezaDisparando
sound_play(Disparo);
alarm[0]=15;
}
}

Y en el alarma pones lo siguiente

sprite_index=FriezaWalk;
image_speed=.3;

Si Hay Un Error ME dices esque no manejo mucho las plataformas

Cita de: Hermoduro en Noviembre 15, 2014, 06:40:59 PM
Bueno La IA Es Mi Especialidad si tu juego usa bloque y quieres que los salten al momente de chocar con ellos y una buena ia seria mas o menos asi
Primero Hase El codigo de Gravedad o si ya lo tienes no
OJO Todo esto va en el step

gravity_direction=270;
if (place_free(x,y+1))gravity=0.8
else
gravity=0;

Hases otro codo en el step Que Sera la IA

Aqui Pones La Velocidad De la Abeja
vel=2.5;

//Common1 Aqui Dice que seguira al jugador por ejemplo Zoro y dice tambien que lo seguira a 350 steps si bajas el 350 a 250 sera meno distancia de seguimiento
if(distance_to_object(Zoro)<350)
{
  if(x<Zoro.x){
        hspeed=vel;
        //Aqui Dice la Imagen Que Usa Para Caminar
        sprite_index=FriezaWalk; image_xscale=1; image_speed=.3;
        }
    //Aqui Camina En reversa
    if(x>Zoro.x){
        hspeed=-vel;
       //El image_xscale Significa Que el sprite sera volteado horizontal Siginifica del otro Lado
        sprite_index=FriezaWalk; image_xscale=-1; image_speed=.3;
        }
}

// Aqui Es Cuando Da El Salto__ Donde Dice bloque pon el objecto solido y vspeed es cuando quieres que salte puede modificar
if(place_meeting(x+48,y,Bloque) and hspeed=vel ){
    vspeed=-11;
    }
if(place_meeting(x-48,y,Bloque) and hspeed=-vel ){
    vspeed=-11;
    }


//Esto Es Si No tienes un codigo para que dispare
//Enemigo Ataca   
if distance_to_object(Zoro)<150
{
//El Random Es PARA Que no dispare todas las balas de un disparo tu puedes poner variables
if(random(30)<=1)
{
if(instance_exists(self)) && Frieza.image_xscale=1 {instance_create(x+70,y+10,BalaMarine)}
if(instance_exists(self)) && Frieza.image_xscale=-1 {instance_create(x-70,y+10,BalaMarine)}
golpeado=true;
image_speed=.4;
sprite_index=FriezaDisparando
sound_play(Disparo);
alarm[0]=15;
}
}

Y en el alarma pones lo siguiente

sprite_index=FriezaWalk;
image_speed=.3;

Si Hay Un Error ME dices esque no manejo mucho las plataformas
Muchas gracias por tomarte tu tiempo en darme tu código :D
Evidentemente tu método es mucho mejor que el mío, pero sí, tengo un error. No soy muy bueno (ni siquiera un poco) usando GML, por eso se deben mis errores  :-[
El error me dice "Unknown variable image_xscale"
Un día estaba yo feliz comiendo pastel y me acordé que el pastel sabía a pastel, y tras reflexionarlo un poco deduje que la peculiar reacción que este producía en mí no era del todo de mi agrado. Entonces pensé: ¿Por qué estoy comiendo pastel, si es que no me gusta su áspero sabor? Y encontré la respuesta: se llamaba pay. El pay, salve el gran poderoso pay, quien guía mi vida para evitar que aquel cruel y dañino pastel me atrape en sus enguyentes brazos de chocolate; su sabor, exquisito, podía sentir sus capas de crema y frutas mezclarse con mi saliva en una danza espiritual e inspiradora.

Olvídalo, fue un error mío, lo he solucionado. ¡Me salvaste la vida! :'D
Un día estaba yo feliz comiendo pastel y me acordé que el pastel sabía a pastel, y tras reflexionarlo un poco deduje que la peculiar reacción que este producía en mí no era del todo de mi agrado. Entonces pensé: ¿Por qué estoy comiendo pastel, si es que no me gusta su áspero sabor? Y encontré la respuesta: se llamaba pay. El pay, salve el gran poderoso pay, quien guía mi vida para evitar que aquel cruel y dañino pastel me atrape en sus enguyentes brazos de chocolate; su sabor, exquisito, podía sentir sus capas de crema y frutas mezclarse con mi saliva en una danza espiritual e inspiradora.

Jejejejje Apenas Te andaba respondiendo jejejeje :-[
Y Que tal Como Te fue Te Puedo Ayudar enalgo mas