Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: gonzakisty en Abril 25, 2016, 12:23:27 AM

Título: Juego "Plantas vs Zombies" objeto que dispare
Publicado por: gonzakisty en Abril 25, 2016, 12:23:27 AM
Hola estaba haciendo un tower defence estilo plantas vs zombies y necesitaba saber como puedo hacer que mi objeto "obj_Planta" dispare "obj_Guisante" cuando el "obj_Enemigo" aparezca a la derecha de él, lo había intentado pero lo que paso es que disparaban de todas las filas aunque no hayan enemigos en la misma ya que puse que dispare si el "obj_Enemigo" esta dentro de un rango. :-[
Título: Re:Juego "Plantas vs Zombies" objeto que dispare
Publicado por: bygdle en Abril 25, 2016, 12:29:20 AM
Puedes intentar usar un collision_line() para detectar si hay alguna colisión con una instancia de obj_Enemigo al frente.
Por ejemplo, en el obj_Planta, evento <create>:
[gml]
disparo = 0;
[/gml]
Y en <step>:
[gml]
var colision;
colision = collision_line(x, y, room_width, y, obj_Enemigo, false, true);
if (colision != noone) { //Si hay un enemigo en frente suyo
    if (disparo < 30) {
        disparo ++;
    }
    else { //Y si puede disparar
        var bala;
        disparo = 0;
        bala = instance_create(x, y, obj_Planta); //Disparar
        bala.hspeed = 12; //con una velocidad de 12
    }
}
[/gml]
Título: Re:Juego "Plantas vs Zombies" objeto que dispare
Publicado por: gonzakisty en Abril 25, 2016, 12:52:02 AM
Cita de: NiuWeb en Abril 25, 2016, 12:29:20 AM
Puedes intentar usar un collision_line() para detectar si hay alguna colisión con una instancia de obj_Enemigo al frente.
Por ejemplo, en el obj_Planta, evento <create>:
[gml]
disparo = 0;
[/gml]
Y en <step>:
[gml]
var colision;
colision = collision_line(x, y, room_width, y, obj_Enemigo, false, true);
if (colision != noone) { //Si hay un enemigo en frente suyo
    if (disparo < 30) {
        disparo ++;
    }
    else { //Y si puede disparar
        var bala;
        disparo = 0;
        bala = instance_create(x, y, obj_Planta); //Disparar
        bala.hspeed = 12; //con una velocidad de 12
    }
}
[/gml]
Gracias me sirvio