コード例 #1
0
    public static Booster initFromModel(Model model)
    {
        Booster booster = null;

        switch (model)
        {
        case Model.IronDenture:
            booster = new IronDenture();
            break;

        /*case Model.Mushroom:
         *  booster = new Mushroom();
         *  break;*/
        case Model.GasEquipment:
            booster = new GasEquipment();
            break;

        case Model.MagicShield:
            booster = new MagicShield();
            break;

        case Model.QueenTermite:
            booster = new QueenTermite();
            break;
        }
        return(booster);
    }
コード例 #2
0
 void Awake()
 {
     bulletHolder = GameObject.FindGameObjectWithTag("BulletHold");
     //bulletHolder = GameObject.Find("BulletHold");
     playerShield = FindObjectOfType <MagicShield>();
     body2D       = GetComponent <Rigidbody2D>();
 }
コード例 #3
0
    void Update()
    {
        Player_Controller player = GetComponent <Player_Controller>();
        MagicShield       shield = GetComponentInChildren <MagicShield>();

        if (player.curHealth == 3)
        {
            Heart1.SetActive(true);
            Heart2.SetActive(true);
            Heart3.SetActive(true);
        }
        else if (player.curHealth == 2)
        {
            Heart1.SetActive(true);
            Heart2.SetActive(true);
            Heart3.SetActive(false);
        }
        else if (player.curHealth == 1)
        {
            Heart1.SetActive(true);
            Heart2.SetActive(false);
            Heart3.SetActive(false);
        }
        else if (player.curHealth == 0)
        {
            Heart1.SetActive(false);
            Heart2.SetActive(false);
            Heart3.SetActive(false);
        }

        shieldTimer.text = "Shield Timer " + System.Math.Round(shield.shieldUse, 0);
    }
コード例 #4
0
    public override bool InitMagicalObject(GameObject Weapon, GameObject Direction)
    {
        CharacterStatus Charstats = Weapon.GetComponentInParent <CharacterStatus>();

        if (Charstats != null && Charstats.CurrentMana >= Cost)
        {
            GameObject  FireShield = Instantiate(SpellPrefab);
            MagicShield shield     = FireShield.GetComponent <MagicShield>();
            shield.currentTime                 = EffectDuration;
            shield.MaxTime                     = EffectDuration;
            FireShield.transform.parent        = Charstats.transform;
            FireShield.transform.localPosition = Vector3.zero + (new Vector3(0, 1, 0));
            Charstats.CurrentMana             -= Cost;
            shield.StartCounting               = true;
            GlobalCoolDown                     = true;
            return(true);
        }
        return(false);
    }
コード例 #5
0
 public static Booster initFromModel(Model model)
 {
     Booster booster = null;
     switch (model)
     {
         case Model.IronDenture:
             booster = new IronDenture();
             break;
         /*case Model.Mushroom:
             booster = new Mushroom();
             break;*/
         case Model.GasEquipment:
             booster = new GasEquipment();
             break;
         case Model.MagicShield:
             booster = new MagicShield();
             break;
         case Model.QueenTermite:
             booster = new QueenTermite();
             break;
     }
     return booster;
 }
コード例 #6
0
    void Update()
    {
        Player_Controller player = GetComponent <Player_Controller>();
        MagicShield       shield = GetComponentInChildren <MagicShield>();

        if (player.curHealth == 3)
        {
            Heart1.SetActive(true);
            Heart2.SetActive(true);
            Heart3.SetActive(true);


            noHeart1.SetActive(false);
            noHeart2.SetActive(false);
            noHeart3.SetActive(false);
        }
        else if (player.curHealth == 2)
        {
            Heart1.SetActive(true);
            Heart2.SetActive(true);
            Heart3.SetActive(false);

            noHeart1.SetActive(false);
            noHeart2.SetActive(false);
            noHeart3.SetActive(true);
        }
        else if (player.curHealth == 1)
        {
            Heart1.SetActive(true);
            Heart2.SetActive(false);
            Heart3.SetActive(false);

            noHeart1.SetActive(false);
            noHeart2.SetActive(true);
            noHeart3.SetActive(true);
        }
        else if (player.curHealth == 0)
        {
            Heart1.SetActive(false);
            Heart2.SetActive(false);
            Heart3.SetActive(false);

            noHeart3.SetActive(true);
            noHeart3.SetActive(true);
            noHeart3.SetActive(true);
        }

        //shieldTimer.text = "Shield Timer " + System.Math.Round(shield.shieldUse, 0);

        /*
         * //Shield audio test function
         * if shield.shieldUse > 2 {
         *      PlayAudio(1);
         * }
         *
         * else if (shield.shieldUse > 2 && shield.shieldUse < 3){
         *      PlayAudio(2);
         * }
         *
         * else if (shield.shieldUse > 1 && shield.shieldUse < 2){
         *      PlayAudio(3);
         * }
         *
         * else if (shield.shieldUse = 0){
         *      PlayAudio(4);
         * }
         */
    }
コード例 #7
0
 void Awake()
 {
     body2D       = GetComponent <Rigidbody2D>();
     playerShield = FindObjectOfType <MagicShield>();
 }
コード例 #8
0
ファイル: AIController.cs プロジェクト: Drjakll/Hocus-Pocus
    // Update is called once per frame
    void Update()
    {
        if (Controllable)
        {
            movements.attacks = Attacks.NoSpell;

            RaycastHit ObjectInfront;
            float      DistanceFromEnemy = (transform.position - Target.transform.position).magnitude;

            Collider[] DangerSurrounding = Physics.OverlapSphere(transform.position, 30, 0b10000000000000000);
            Collider[] IncomingObj       = Physics.OverlapSphere(transform.position, 30, 0b1001100000000000);
            Collider[] DetectPowerUps    = Physics.OverlapSphere(transform.position, 50, 0b1000000000000000000);

            MagicShield MS = GetComponentInChildren <MagicShield>();

            if (movements.control == Control.Forward && Physics.SphereCast(new Ray(transform.position, transform.forward), 6, out ObjectInfront, 2, ~512))
            {
                movements.rotate = GoAround(ObjectInfront.transform.gameObject);
            }
            else if (DetectPowerUps.Length > 0)
            {
                Transform PowerUpTrans = DetectPowerUps[0].transform;
                Vector2   PowerUpDir   = (new Vector2(PowerUpTrans.position.x - transform.position.x, PowerUpTrans.position.z - transform.position.z)).normalized;
                movements.rotate = Alignment(PowerUpDir, this.gameObject);
                if (movements.rotate == Rotation.NoRotate)
                {
                    movements.control = Control.Forward;
                }
                else
                {
                    movements.control = Control.Still;
                }
            }
            else if (DangerSurrounding.Length > 0 || Charstats.CurrentMana < EquippedSpell.Cost || Charstats.CurrentHealth < 150)
            {
                Debug.Log(Charstats.CurrentMana + " : " + EquippedSpell.Cost);
                if (DistanceFromEnemy < 15)
                {
                    movements.rotate = RunAwayFromEnemy(Target.transform);
                }
                else if (DistanceFromEnemy >= 15)
                {
                    movements.rotate = CircleAroundEnemy(Target.transform);
                }

                foreach (Collider Danger in DangerSurrounding)
                {
                    movements.rotate = RunAwayFromEnemy(Danger.gameObject.transform);
                }

                movements.control = Control.Forward;
            }
            else if (IncomingObj.Length > 0)
            {
                foreach (Collider IncObj in IncomingObj)
                {
                    MovingObject spellObj    = IncObj.GetComponent <MovingObject>();
                    HomingObj    homingSpell = IncObj.GetComponent <HomingObj>();
                    if (spellObj != null && spellObj.CasterName == this.gameObject.name)
                    {
                        continue;
                    }
                    if (homingSpell != null && homingSpell.Caster == this.gameObject.name)
                    {
                        continue;
                    }
                    switch (IncObj.gameObject.layer)
                    {
                    case 11:
                        if (DefensiveSpells[1].currentCoolDown < DefensiveSpells[1].Cooldown && movements.IsDoneAnimatingAttack())
                        {
                            defensives.defense = AvoidMissiles(IncObj.gameObject);
                        }
                        else if (MS == null || (MS != null && MS.gameObject.layer != 14))
                        {
                            EquippedSpell = DefensiveSpells[1];
                            CastSpell();
                        }
                        break;

                    case 12:
                        if (DefensiveSpells[0].currentCoolDown < DefensiveSpells[0].Cooldown && movements.IsDoneAnimatingAttack())
                        {
                            defensives.defense = AvoidMissiles(IncObj.gameObject);
                        }
                        else if (MS == null || (MS != null && MS.gameObject.layer != 13))
                        {
                            EquippedSpell = DefensiveSpells[0];
                            CastSpell();
                        }
                        break;

                    case 15:
                        if (movements.IsDoneAnimatingAttack())
                        {
                            defensives.defense = AvoidMissiles(IncObj.gameObject);
                        }
                        break;
                    }
                }
            }
            else if (animator.GetCurrentAnimatorClipInfo(3).Length == 0)
            {
                Vector2 EnemyDir = (new Vector2(Target.transform.position.x - transform.position.x, Target.transform.position.z - transform.position.z)).normalized;
                movements.rotate = Alignment(EnemyDir, Aim);
                GameObject Obstacle = null;

                if (DistanceFromEnemy < 15 && Spells[2].currentCoolDown >= Spells[2].Cooldown)
                {
                    EquippedSpell = Spells[2];
                    CastSpell();
                }
                else if (movements.rotate == Rotation.NoRotate)
                {
                    Vector2    EnemyFacingVec   = (new Vector2(Target.transform.forward.x, Target.transform.forward.z)).normalized;
                    float      EnemyFacingAngle = Mathf.Acos(Vector2.Dot(EnemyDir, EnemyFacingVec));
                    Vector3    RayDir           = (new Vector3(Target.transform.position.x - Aim.transform.position.x, 0, Target.transform.position.z - Aim.transform.position.z)).normalized;
                    RaycastHit Rayhit;

                    Debug.DrawRay(Aim.transform.position, RayDir * 40f);

                    if (Physics.Raycast(new Ray(Aim.transform.position + Aim.transform.right / 2, RayDir), out Rayhit, 40f, 0b100000000000000000))
                    {
                        Obstacle = Rayhit.transform.gameObject;
                    }
                    else if (EnemyFacingAngle < Mathf.PI * .4f)
                    {
                        if (Spells[4].currentCoolDown >= Spells[4].Cooldown)
                        {
                            EquippedSpell = Spells[4];
                            EquippedSpell.CastAtPosition = Target.transform.position;
                            CastSpell();
                        }
                        else
                        {
                            EquippedSpell = Spells[3];
                            CastSpell();
                        }
                    }
                    else
                    {
                        EquippedSpell = Spells[1];
                        CastSpell();
                    }
                }

                if (Obstacle != null)
                {
                    movements.control = AvoidObstacle(Obstacle);
                }
                else if (DistanceFromEnemy < 30)
                {
                    movements.control = Control.Backward;
                }
                else if (DistanceFromEnemy > 40)
                {
                    movements.control = Control.Forward;
                }
                else
                {
                    movements.control = Control.Still;
                }
            }
        }
        else
        {
            movements.control  = Control.Still;
            movements.rotate   = Rotation.NoRotate;
            movements.attacks  = Attacks.NoSpell;
            defensives.defense = Defensive.NotDefensive;
        }

        foreach (AbstractSpell AS in Spells)
        {
            AS.UpdateCoolDown();
        }
        foreach (AbstractSpell AS in DefensiveSpells)
        {
            if (AS.GlobalCoolDown)
            {
                foreach (AbstractSpell DS in DefensiveSpells)
                {
                    DS.currentCoolDown = 0;
                }
                AS.GlobalCoolDown = false;
                break;
            }
            AS.UpdateCoolDown();
        }
    }
コード例 #9
0
 void Awake()
 {
     anim         = GetComponent <Animator>();
     playerShield = FindObjectOfType <MagicShield>();
     visible      = GetComponent <SpriteRenderer>();
 }