Ejemplo n.º 1
0
 /// <summary>
 /// Hace que el esqueleto Salte. No esta completo.
 /// </summary>
 public void SaltarEsqueleto()
 {
     if (_EnSuelo && !AnimatorEnemigo.GetBool("playerattack"))
     {
         _Saltar = true;
         CuerpoEnemigo.velocity = new Vector3(0 /*Para que no se mueva mientras salta */, fuerzaSalto);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Activa la Función de Ataque del enemigo, activandole su animación y verificando si se debe lanzar el cuchillo (Que se activa solo cuando el animation event lo indica en
 /// el método de LanzarCuchillo)
 /// </summary>
 private void Atacar()
 {
     //Animación de Ataque:
     AnimatorEnemigo.SetBool("attack", true);
     //Crear el sprite del cuchillo en el segundo:
     if (isLanzarCuchillo)
     {
         isLanzarCuchillo             = false;
         Arma                         = (GameObject)Instantiate(Arma, PosicionadorArma.transform.position, PosicionadorArma.transform.rotation, TransformEnemigo);
         Arma.transform.localPosition = PosicionadorArma.transform.localPosition;
         if (!Enemigo.GetComponent <SpriteRenderer>().flipX)
         {
             Arma.GetComponent <Rigidbody2D> ().velocity = new Vector2(-10, 0);
         }
         else
         {
             Arma.GetComponent <Rigidbody2D> ().velocity = new Vector2(10, 0);
         }
         Arma.name = "Cuchillo1";
         Arma      = ArmaGuardada;
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Hace que el esqueleto deje de hacer la animación de salto y le va quitando velocidad.
 /// </summary>
 private void DejarSaltar()
 {
     _Saltar = false;
     AnimatorEnemigo.SetFloat("vspeed", CuerpoEnemigo.velocity.y);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Hace que el enemigo deje de atacar quitandole la animación. Se activa cuando el player sale de la plataforma (Se lo indica el triggersPlatforms.cs).
 /// </summary>
 private void DejarAtacar()
 {
     AnimatorEnemigo.SetBool("attack", false);
 }
Ejemplo n.º 5
0
    /// <summary>
    /// Método de Físicas. Se utiliza para mover al enemigo. Hacer que ataque y salte.
    /// </summary>
    private void FixedUpdate()
    {
        //Detectar Suelo:

        _EnSuelo = Physics2D.OverlapCircle(new Vector2(_VerificadorSuelo.position.x, _VerificadorSuelo.position.y), _RangoDetectarSuelo, _LayerSuelo);

        if (Enemigo.GetComponent <SpriteRenderer> ().flipX) //Viendo hacia la derecha:
        {
            velocidadCaminar = Mathf.Abs(velocidadCaminar);
            PosicionadorArma.transform.localPosition = new Vector3(Mathf.Abs(PosicionadorArma.transform.localPosition.x), PosicionadorArma.transform.localPosition.y, PosicionadorArma.transform.localPosition.z);
        }
        else            //Viendo hacia la izquierda:
        {
            velocidadCaminar = velocidadCaminar == Mathf.Abs(velocidadCaminar) ? velocidadCaminar * -1 : velocidadCaminar;
            if (PosicionadorArma.transform.localPosition.x == Mathf.Abs(PosicionadorArma.transform.localPosition.x))
            {
                PosicionadorArma.transform.localPosition = new Vector3(PosicionadorArma.transform.localPosition.x * -1, PosicionadorArma.transform.localPosition.y, PosicionadorArma.transform.localPosition.z);
            }
        }

        if (Estatico && _ContadorAlEstarEstatico <= 0 && !AnimatorEnemigo.GetBool("attack") && !AnimatorEnemigo.GetBool("playerattack"))
        {
            _ContadorAlEstarEstatico = 5;
            Voltear = true;
        }
        else if (Estatico)
        {
            _ContadorAlEstarEstatico -= Time.deltaTime;
        }
        else if (!Estatico)
        {
            _ContadorAlEstarEstatico = 5;
        }

        //Caminar y Atacar:
        if (!JugadorEnPlataforma) // Si el jugador no esta en la plataforma no atacara y caminara o se mantendrá quieto:
        {
            //Verificar si el esqueleto está configurado para caminar o para estar estático:
            if (Estatico)
            {
                _animatorEnemigo.SetFloat("walk", -0.1f);
                DejarAtacar();
            }
            else
            {
                CuerpoEnemigo.velocity = new Vector2(velocidadCaminar, CuerpoEnemigo.velocity.y);
                _animatorEnemigo.SetFloat("walk", 0.1f);
                DejarAtacar();
            }
        }
        else //En cambio si el jugador esta en la plataforma no caminara y atacara:
        {
            Atacar();
        }

        //Voltear al Enemigo
        if (Voltear)
        {
            Enemigo.GetComponent <SpriteRenderer> ().flipX = Enemigo.GetComponent <SpriteRenderer> ().flipX ? false : true;
            Vector2 ColliderEsquivador = transform.Find("ColliderEsquivador").GetComponent <BoxCollider2D>().offset;
            transform.Find("ColliderEsquivador").GetComponent <BoxCollider2D>().offset = new Vector2(Mathf.Abs(ColliderEsquivador.x) == ColliderEsquivador.x ? ColliderEsquivador.x * -1 : Mathf.Abs(ColliderEsquivador.x), ColliderEsquivador.y);
            Voltear = false;
        }

        //Hacer que siempre valla hacia donde mira:
        if (_Saltar)
        {
            AnimatorEnemigo.SetFloat("vspeed", 0.1f);
        }
        else
        {
            CuerpoEnemigo.velocity = new Vector3(CuerpoEnemigo.velocity.x, CuerpoEnemigo.velocity.y - Time.deltaTime);
        }
    }