Beispiel #1
0
 void Update()
 {
     if (dragonController != null)
     {
         if (dragonController.gameObject.activeSelf)
         {
             if (dragonController.StateAction == EDragonStateAction.MOVE)
             {
                 for (int i = 0; i < listBabyDragon.Count; i++)
                 {
                     BabyDragonController babyDragonController = listBabyDragon[i].GetComponent <BabyDragonController>();
                     if (babyDragonController.StateAction != EDragonStateAction.MOVE)
                     {
                         try
                         {
                             Vector3 handleException = dragonController.stateMove.listPosition[PlayConfig.BabyDragonIndexForListStart
                                                                                               - PlayConfig.BabyDragonIndexForListDistance * babyDragonController.index]; // for test exception
                             babyDragonController.stateAttack.target = null;
                             babyDragonController.StateAction        = EDragonStateAction.MOVE;
                         }
                         catch
                         {
                         }
                     }
                 }
             }
         }
     }
 }
    public void attackDragonBaby()
    {
        if (target == null)
        {
            return;
        }
        BabyDragonController babyController = target.GetComponent <BabyDragonController>();

        if (babyController != null)
        {
            int dmg = PlayManager.Instance.pushDamagePhysics(controller.attribute.ATK.Min,
                                                             controller.attribute.ATK.Max,
                                                             babyController.attribute.DEF);
            babyController.attribute.HP.Current -= dmg;
            if (babyController.attribute.HP.Current < 0)
            {
                babyController.attribute.HP.Current = 0;
            }

            float valueTo = babyController.attribute.HP.Current / (float)babyController.attribute.HP.Max;

            babyController.updateTextHP();

            EffectSupportor.Instance.runSliderValue(babyController.sliderHP, valueTo, EffectSupportor.TimeValueRunHP);
        }
    }
Beispiel #3
0
    void attackBabyDragon(BabyDragonController babyDragon)
    {
        babyDragon.babyAttack.listEnemy.Add(this.transform.parent.gameObject);
        babyDragon.babyAttack.chooseEnemyToAttack();

        attack(babyDragon.gameObject);
    }
    void attackBabyDragon(BabyDragonController babyDragon)
    {
        babyDragon.babyAttack.listEnemy.Add(this.transform.parent.gameObject);
        babyDragon.babyAttack.chooseEnemyToAttack();

        attack(babyDragon.gameObject);
    }
Beispiel #5
0
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == TagHashIDs.ColliderForEnemyATK)
        {
            if (controller.attribute.HP.Current <= 0)
            {
                return;
            }

            if (other.transform.parent.GetComponent <DragonController>() != null)
            {
                DragonController dragonController = other.transform.parent.GetComponent <DragonController>();

                if (dragonController.StateOffense == EDragonStateOffense.NONE &&
                    dragonController.attribute.HP.Current > 0 &&
                    !dragonController.dragonAttack.listEnemy.Contains(this.transform.parent.gameObject) &&
                    !listDragon.Contains(other.transform.parent.gameObject))
                {
                    //attackPlayerDragon(dragonController);
                    listDragon.Add(other.transform.parent.gameObject);
                }

                if (controller.StateAction == EEnemyStateAction.MOVE && controller.stateAttack.target == null &&
                    dragonController.StateAction != EDragonStateAction.ATTACK &&
                    dragonController.StateAction != EDragonStateAction.MOVE)
                {
                    chooseDragonToAttack();
                }
            }
            else
            {
                BabyDragonController babyController = other.transform.parent.GetComponent <BabyDragonController>();

                if (babyController.attribute.HP.Current > 0 &&
                    !babyController.babyAttack.listEnemy.Contains(this.transform.parent.gameObject) &&
                    !listDragon.Contains(other.transform.parent.gameObject))
                {
                    //attackPlayerDragon(dragonController);
                    listDragon.Add(other.transform.parent.gameObject);
                }

                if (controller.StateAction == EEnemyStateAction.MOVE && controller.stateAttack.target == null &&
                    babyController.StateAction != EDragonStateAction.ATTACK &&
                    babyController.StateAction != EDragonStateAction.MOVE)
                {
                    chooseDragonToAttack();
                }
            }
        }
    }
Beispiel #6
0
    public void chooseDragonToAttack()
    {
        if (controller.stateAttack.target == null && listDragon.Count > 0)
        {
            bool hasTarget = false;
            for (int i = 0; i < listDragon.Count; i++)
            {
                if (listDragon[i] == null)
                {
                    break;
                }

                if (listDragon[i].activeSelf)
                {
                    if (listDragon[i].GetComponent <DragonController>() != null)
                    {
                        DragonController dragon = listDragon[i].GetComponent <DragonController>();
                        if (dragon.StateAction == EDragonStateAction.IDLE)
                        {
                            attackPlayerDragon(dragon);
                            break;
                        }
                    }
                    else
                    {
                        BabyDragonController baby = listDragon[i].GetComponent <BabyDragonController>();
                        if (baby.StateAction == EDragonStateAction.IDLE)
                        {
                            attackBabyDragon(baby);
                            break;
                        }
                    }
                }
            }

            if (hasTarget)
            {
                controller.stateAttack.target = null;
                controller.stateMove.State    = EEnemyMovement.MOVE_ON_PATHS;
                controller.StateAction        = EEnemyStateAction.MOVE;
            }
        }
        else
        {
            controller.stateAttack.target = null;
            controller.stateMove.State    = EEnemyMovement.MOVE_ON_PATHS;
            controller.StateAction        = EEnemyStateAction.MOVE;
        }
    }
 void Start()
 {
     controller = transform.parent.GetComponent<BabyDragonController>();
     listEnemy = new System.Collections.Generic.List<GameObject>();
 }
 void OnEnable()
 {
     animationFrames = GetComponent<AnimationFrames>();
     controller = transform.parent.GetComponent<BabyDragonController>();
 }
    public override void Execute(EnemyController obj)
    {
        if (!obj.isEnable)
        {
            return;
        }

        if (target == null)
        {
            controller.stateMove.State = EEnemyMovement.MOVE_ON_PATHS;
            controller.StateAction     = EEnemyStateAction.MOVE;
            return;
        }
        else
        {
            if (target.GetComponent <DragonController>() != null)
            {
                DragonController dragonController = target.GetComponent <DragonController>();
                if (dragonController.attribute.HP.Current <= 0)
                {
                    dragonController.StateAction  = EDragonStateAction.DIE;
                    dragonController.StateOffense = EDragonStateOffense.NONE;
                    controller.StateAction        = EEnemyStateAction.MOVE;
                    target = null;
                    return;
                }
            }
            else
            {
                BabyDragonController babyController = target.GetComponent <BabyDragonController>();
                if (babyController.attribute.HP.Current <= 0)
                {
                    babyController.StateAction = EDragonStateAction.DIE;

                    controller.enemyAttack.listDragon.Remove(target);
                    target = null;
                    controller.enemyAttack.chooseDragonToAttack();
                    return;
                }
            }
        }

        if (target.transform.position.x >= controller.transform.position.x && direction == EDragonStateDirection.LEFT)
        {
            direction = EDragonStateDirection.RIGHT;

            if (preDirection != direction)
            {
                setDirection();
            }
        }
        else if (target.transform.position.x < controller.transform.position.x && direction == EDragonStateDirection.RIGHT)
        {
            direction = EDragonStateDirection.LEFT;

            if (preDirection != direction)
            {
                setDirection();
            }
        }

        if (preTargetPosition != target.transform.position)
        {
            if (target.transform.position.x < controller.transform.position.x)
            {
                controller.stateMove.Direction = EDragonStateDirection.RIGHT;
            }
            else
            {
                controller.stateMove.Direction = EDragonStateDirection.LEFT;
            }

            controller.stateMove.State = EEnemyMovement.MOVE_TO_DRAGON;
            controller.StateAction     = EEnemyStateAction.MOVE;
        }
    }
Beispiel #10
0
 void Start()
 {
     controller = transform.parent.GetComponent <BabyDragonController>();
     listEnemy  = new System.Collections.Generic.List <GameObject>();
 }
 void OnEnable()
 {
     animationFrames = GetComponent <AnimationFrames>();
     controller      = transform.parent.GetComponent <BabyDragonController>();
 }
Beispiel #12
0
    void initBabyDragon()
    {
        GameObject babyDragon = Instantiate(Resources.Load <GameObject>("Prefab/Dragon/Baby/Baby Dragon")) as GameObject;

        babyDragon.transform.parent = PlayManager.Instance.Temp.Dragon.transform;
        BabyDragonController babyController = babyDragon.GetComponent <BabyDragonController>();

        babyController.index = countBaby;

        #region Scale base on parent scale
        babyDragon.transform.localScale = new Vector3(0.5f, 0.5f, 1);

        BoxCollider boxCollider = babyDragon.GetComponent <BoxCollider>();
        boxCollider.size = new Vector2(boxCollider.size.x / 2, boxCollider.size.y / 2);

        //foreach (Transform child in babyDragon.transform)
        //{
        //    if(child.name.Equals("Collider For Enemy ATK"))
        //    {
        //        SphereCollider collider = child.GetComponent<SphereCollider>();
        //        collider.radius = collider.radius * 0.5f;
        //    }
        //    if(child.name.Equals("ATK Range"))
        //    {
        //        SphereCollider collider = child.GetComponent<SphereCollider>();
        //        collider.radius = collider.radius * 0.5f;
        //    }
        //}

        #endregion

        if (dragonController.StateDirection == EDragonStateDirection.LEFT)
        {
            babyDragon.transform.position = new Vector3(PlayerDragon.transform.position.x + 0.25f, PlayerDragon.transform.position.y,
                                                        PlayerDragon.transform.position.z);
            babyController.StateDirection = EDragonStateDirection.LEFT;
        }
        else
        {
            babyDragon.transform.position = new Vector3(PlayerDragon.transform.position.x - 0.25f, PlayerDragon.transform.position.y,
                                                        PlayerDragon.transform.position.z);
            babyController.StateDirection = EDragonStateDirection.RIGHT;
        }

        if (babyController.StateDirection == EDragonStateDirection.LEFT)
        {
            Vector3 scale = babyDragon.transform.GetChild(0).localScale;
            babyDragon.transform.GetChild(0).localScale = new Vector3(-1 * scale.x, scale.y, scale.z);
        }
        else
        {
            Vector3 scale = babyDragon.transform.GetChild(0).localScale;
            babyDragon.transform.GetChild(0).localScale = new Vector3(Mathf.Abs(scale.x), scale.y, scale.z);
        }

        //Stretch HP
        babyDragon.transform.GetChild(1).GetComponent <UIStretch>().container = GameObject.FindWithTag("Root");

        babyController.dragonParent = dragonController;
        listBabyDragon.Add(babyDragon);
        countBaby = listBabyDragon.Count;
    }