Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: desplo en Marzo 20, 2016, 03:46:13 AM

Título: Hacer que un objeto "ataque" o "ignore" a otro?
Publicado por: desplo en Marzo 20, 2016, 03:46:13 AM
Tengo 2 objetos (personaje y villano). cuando colisionan se empiezen a atacar. Pero si quiero aparecer otra instancia del mismo objeto "villano", quiero que la segunda instancia ignore al objeto "personaje" ya que ya se esta atacando con la primera instancia de villano.
Título: Re:Hacer que un objeto "ataque" o "ignore" a otro?
Publicado por: bygdle en Marzo 20, 2016, 03:55:08 AM
Podrías declarar en el objeto personaje una variable atacando, activarla cuando el villano esté atacando y desactivarla cuando no. Y cuando un nuevo villano aparece, compruebe si está atacando, y de no ser así, atacar.
[gml]
///Create del personaje
atacando = false;
[/gml][gml]
///Colisión del villano con el personaje, el objeto es el villano
if other.atacando = false
{
    //Lo que haces para "atacar"
    other.atacando = true;
}
[/gml]
Y debes comprobar que cuando no se esté colisionando con ningún villano, se desactive la variable
[gml]
///Evento step del personaje
if !place_meeting(x, y, villano)
atacando = false;
[/gml]

Todo inventado, no lo he comprobado.
Título: Re:Hacer que un objeto "ataque" o "ignore" a otro?
Publicado por: desplo en Marzo 20, 2016, 05:13:15 AM
Cita de: NiuWeb en Marzo 20, 2016, 03:55:08 AM
Podrías declarar en el objeto personaje una variable atacando, activarla cuando el villano esté atacando y desactivarla cuando no. Y cuando un nuevo villano aparece, compruebe si está atacando, y de no ser así, atacar.
[gml]
///Create del personaje
atacando = false;

///Colisión del villano con el personaje, el objeto es el villano
if other.atacando = false
{
    //Lo que haces para "atacar"
    other.atacando = true;
}
[/gml]
Y debes comprobar que cuando no se esté colisionando con ningún villano, se desactive la variable
[gml]
///Evento step del personaje
if !place_meeting(x, y, villano)
atacando = false;
[/gml]

Todo inventado, no lo he comprobado.

Te comento que si funciona en una parte. Los dos se dejan de atacar, pero la segunda instancia sigue colisionando con el personaje y no avanza (se quedan como pegados).

Gracias por la ayuda  :)