Пример #1
0
    public void Attaque()
    {
        switch (comp.attaque)
        {
        case typeAttaque.Tirer:
            weapon.Tirer(directionTir, comp.dmgAttaque, comp.fireRate, tirerSurJoueur);
            break;

        case typeAttaque.Explosion:
            weapon.Explosion(comp.dmgAttaque, en, comp.fireRate);
            break;

        default:
            break;
        }
    }
Пример #2
0
    //  fonction de déplacement vers le noeud précicé, true = gauche / false = droite
    public void jumpRot(bool gd)
    {
        //  test de déplacement avec DOTween
        Vector3 pos   = tr.position;
        Vector3 angle = tr.rotation.eulerAngles;

        if (m_arreter)
        {
            return;
        }

        //Vector3 pos = new Vector3(7.0f, 0.0f, 0.0f) + tr.position;
        if (m_CurrentNode != null) // le boss est sur un noeud de la liste
        {
            if (gd == true)        //  il veux aller à gauche
            {
                if (m_CurrentNode.m_VoisinGauche != null)
                {
                    pos          += (m_CurrentNode.m_VoisinGauche.transform.position - pos);
                    angle        += new Vector3(0.0f, 0.0f, 90.0f);
                    m_CurrentNode = m_CurrentNode.m_VoisinGauche;
                }
                else if (m_CurrentNode.m_VoisinDroit != null)  // aucun voisin gauche, va à droite
                {
                    pos          += (m_CurrentNode.m_VoisinDroit.transform.position - pos);
                    angle        += new Vector3(0.0f, 0.0f, -90.0f);
                    m_CurrentNode = m_CurrentNode.m_VoisinDroit;
                }
                else
                {
                    return;
                }
            }
            else    // il veux aller à droite
            {
                if (m_CurrentNode.m_VoisinDroit != null)
                {
                    pos          += (m_CurrentNode.m_VoisinDroit.transform.position - pos);
                    angle        += new Vector3(0.0f, 0.0f, -90.0f);
                    m_CurrentNode = m_CurrentNode.m_VoisinDroit;
                }
                else if (m_CurrentNode.m_VoisinGauche != null)// aucun voisin droite, va à gauche
                {
                    pos          += (m_CurrentNode.m_VoisinGauche.transform.position - pos);
                    angle        += new Vector3(0.0f, 0.0f, 90.0f);
                    m_CurrentNode = m_CurrentNode.m_VoisinGauche;
                }
                else
                {
                    return;
                }
            }
        }
        else
        {
            Debug.LogError("Aucun noeud courrant pour le boss écrabouilleur");
            return;
        }

        if (m_Phase2)
        {
            pos.y -= 6.5f;
        }

        Sequence bouge = DOTween.Sequence();

        bouge.Append(tr.DOJump(pos, 8.0f, 1, 0.8f).SetEase(Ease.InOutQuad));
        bouge.Insert(0.1f, tr.DORotate(angle, 0.75f).SetEase(Ease.InOutQuart));

        if (m_Phase2 == false)
        {
            bouge.AppendCallback(() =>
            {
                CameraShaker.Instance.ShakeOnce(3f, 2f, .1f, 1.0f);
                if (FindObjectOfType <AudioManager>() != null)
                {
                    FindObjectOfType <AudioManager>().Play("StompBoss");
                }
            });
        }
        else if (m_Player != null)
        {
            bouge.AppendCallback(() =>
            {
                WeaponEnnemi canon = m_Core.GetComponent <WeaponEnnemi>();

                canon.Tirer(new Vector2(1.0f, 0.0f), 10, 0.0f);
                canon.Tirer(new Vector2(0.0f, 1.0f), 10, 0.0f);
                canon.Tirer(new Vector2(-1.0f, 0.0f), 10, 0.0f);
            });
        }

        bouge.Play();
    }