Ejemplo n.º 1
0
    public IEnumerator changeState(myEnums.Estado _edo, float _timetochange)
    {
        yield return(new WaitForSeconds(2f));

        edoActual    = _edo;
        puedeMoverse = true;
    }
Ejemplo n.º 2
0
 public void IniciarInvestigacion(Vector3 puntoaInvestigar)
 {
     if (!muerto)
     {
         Vector3 distance = tr.position - puntoaInvestigar;
         if (distance.sqrMagnitude < distanciaPersecusion * distanciaPersecusion && edoActual != myEnums.Estado.atacar)
         {
             edoActual    = myEnums.Estado.investigar;
             puntoInteres = puntoaInvestigar;
             puedeMoverse = true;
         }
     }
 }
Ejemplo n.º 3
0
    void trySpotPlayer()
    {
        Vector3 playerdirection = tr.position - pltr.position;

        if (playerdirection.sqrMagnitude < distanciaPersecusion * distanciaPersecusion)
        {//si esta en rango de persecucion
            //si esta en angulo de vision de su cono de 90°
            if (Vector3.SignedAngle(tr.forward, pltr.position, Vector3.up) < 45.0f)
            {//DETECTADO
                StopAllCoroutines();
                puedeMoverse = true;
                edoActual    = myEnums.Estado.atacar;
            }
        }
    }
Ejemplo n.º 4
0
 public void IniciarHuidaTemporal(Vector3 puntoAHuir)
 {
     if (!muerto)
     {
         direccion = tr.position - puntoAHuir;
         if (direccion.sqrMagnitude < distanciaPersecusion * distanciaPersecusion)
         {
             anim.SetInteger("state", 1);
             edoActual    = myEnums.Estado.indefinido;
             puntoInteres = puntoAHuir;
             direccion.y  = 0;
             direccion.Normalize();
             //tr.rotation = Quaternion.LookRotation(direccion, Vector3.up);
             StartCoroutine(changeState(myEnums.Estado.patrullar, 2.0f));
         }
     }
 }
Ejemplo n.º 5
0
    public void Daniar(int _danio)
    {
        if (edoActual != myEnums.Estado.indefinido)
        {
            edoActual = myEnums.Estado.atacar;
        }

        if (salud > 0)
        {
            salud -= _danio;
            if (salud < 25 && huye)
            {
                edoActual = myEnums.Estado.huir;
            }
        }
        else
        {
            if (isStronk)
            {
                foreach (var IA in FindObjectsOfType <IA_Enemigo>())
                {
                    if (!IA.isStronk)
                    {
                        IA.IniciarHuidaTemporal(pltr.position);
                    }
                }
            }
            puntoInteres = tr.position;
            edoActual    = myEnums.Estado.muerto;
            anim.SetBool("alive", false);
            direccion = Vector3.zero;
            muerto    = true;
            GetComponent <Collider>().enabled = false;
            rb.isKinematic = true;
            SoundFX.miSFX.PlaySFX(2);
            SceneVictoryManager.scInstance.addnMuertos();

            //gameObject.SetActive(false);
        }
    }