Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Yulaserio en Noviembre 13, 2014, 02:37:35 AM

Título: La abeja salta y se teletransporta... error D:
Publicado por: Yulaserio en Noviembre 13, 2014, 02:37:35 AM
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?
(http://i.imgur.com/dhxuGYM.png)
Retiré los views del room para que se puediera apreciar como esa abeja tonta de la pistola se teletransporta brujílmente hasta allá arribota  :'( :'( :'(
Título: Re:La abeja salta y se teletransporta... error D:
Publicado por: 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
Título: Re:La abeja salta y se teletransporta... error D:
Publicado por: Yulaserio en Noviembre 15, 2014, 05:42:37 PM
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.
Título: Re:La abeja salta y se teletransporta... error D:
Publicado por: 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
Título: Re:La abeja salta y se teletransporta... error D:
Publicado por: Yulaserio en Noviembre 16, 2014, 02:47:52 AM
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"
Título: Re:La abeja salta y se teletransporta... error D:
Publicado por: Yulaserio en Noviembre 16, 2014, 03:19:20 AM
Olvídalo, fue un error mío, lo he solucionado. ¡Me salvaste la vida! :'D
Título: Re:La abeja salta y se teletransporta... error D:
Publicado por: Hermoduro en Noviembre 16, 2014, 03:23:33 AM
Jejejejje Apenas Te andaba respondiendo jejejeje :-[
Y Que tal Como Te fue Te Puedo Ayudar enalgo mas