Esempio n. 1
0
 private void Idle()
 {
     if (spriteAnimator != null)
     {
         SpriteAnimator.MotionClearCB motionClearCB = new SpriteAnimator.MotionClearCB(IdleMotionClear);
         spriteAnimator.PlayAnimation(eAnimationType.Type_Idle, motionClearCB);
     }
 }
Esempio n. 2
0
    private IEnumerator Attack(Transform targetTransform)
    {
        if (spriteAnimator != null)
        {
            SpriteAnimator.MotionClearCB motionClearCB = new SpriteAnimator.MotionClearCB(AttackMotionClear);
            spriteAnimator.PlayAnimation(eAnimationType.Type_Attack, motionClearCB, targetTransform);
        }

        yield return(new WaitForSeconds(status.GetAttackSpeed));

        StartCoroutine("Process");
    }
Esempio n. 3
0
    private void Death()
    {
        if (GameManager.Instance != null &&
            GameManager.Instance.CheckEnemyExist(this))
        {
            GameManager.Instance.RemoveEnemyList(this);

            StopAllCoroutines();
            if (spriteAnimator != null)
            {
                SpriteAnimator.MotionClearCB motionClearCB = new SpriteAnimator.MotionClearCB(DeathMotionClear);
                spriteAnimator.PlayAnimation(eAnimationType.Type_Death, motionClearCB);
            }
        }
    }
Esempio n. 4
0
    private IEnumerator AttackMode()
    {
        while (true)
        {
            switch (status.GetTable.attackType)
            {
            case eAttackType.Type_Normal: {
                Enemy targetEnemy = null;
                if (status.GetEnemyNormalType(out targetEnemy))
                {
                    if (spriteAnimator != null)
                    {
                        SpriteAnimator.MotionClearCB motionClearCB = new SpriteAnimator.MotionClearCB(AttackMotionCB);
                        spriteAnimator.PlayAnimation(eAnimationType.Type_Attack, motionClearCB, targetEnemy);
                    }

                    yield return(new WaitForSeconds(status.GetAttackSpeed));
                }
            }

            break;

            case eAttackType.Type_Piercing: {
                List <Enemy> enemyList = null;
                if (status.GetEnemyPiercingType(out enemyList))
                {
                    if (spriteAnimator != null)
                    {
                        SpriteAnimator.MotionClearCB motionClearCB = new SpriteAnimator.MotionClearCB(AttackMotionCB);
                        spriteAnimator.PlayAnimation(eAnimationType.Type_Attack, motionClearCB, enemyList);
                    }

                    yield return(new WaitForSeconds(status.GetAttackSpeed));
                }
            }

            break;

            case eAttackType.Type_Explosion: {
                Enemy targetEnemy = null;
                if (status.GetEnemyExplosionType(out targetEnemy))
                {
                    if (spriteAnimator != null)
                    {
                        SpriteAnimator.MotionClearCB motionClearCB = new SpriteAnimator.MotionClearCB(AttackMotionCB);
                        spriteAnimator.PlayAnimation(eAnimationType.Type_Attack, motionClearCB, targetEnemy.transform);
                    }

                    yield return(new WaitForSeconds(status.GetAttackSpeed));
                }
            }

            break;

            case eAttackType.Type_Area: {
                List <Enemy> enemyList = null;
                if (status.GetEnemyAreaType(out enemyList))
                {
                    if (spriteAnimator != null)
                    {
                        SpriteAnimator.MotionClearCB motionClearCB = new SpriteAnimator.MotionClearCB(AttackMotionCB);
                        spriteAnimator.PlayAnimation(eAnimationType.Type_Attack, motionClearCB, enemyList);
                    }

                    yield return(new WaitForSeconds(status.GetAttackSpeed));
                }
            }

            break;

            case eAttackType.Type_Slow: {
                if (spriteAnimator != null)
                {
                    spriteAnimator.PlayAnimation(eAnimationType.Type_Idle, null);
                }

                List <Enemy> enemyList = null;
                if (status.GetEnemyAreaType(out enemyList))
                {
                    for (int i = 0; i < enemyList.Count; i++)
                    {
                        enemyList[i].AddBuff(new BuffParam(status.GetTable.towerType,
                                                           -(status.GetDamage * 0.01f), status.GetTable.damageTime + Time.realtimeSinceStartup, eBuffType.Type_Move_Speed));
                    }

                    yield return(new WaitForSeconds(status.GetAttackSpeed));
                }
            }

            break;

            case eAttackType.Type_Generator: {
                if (spriteAnimator != null)
                {
                    spriteAnimator.PlayAnimation(eAnimationType.Type_Idle, null);
                }

                SetBuffText(SupportString.GetString(6200,
                                                    "#@Value@#", string.Format("{0:n0}", status.GetDamage)));
                if (GameManager.Instance != null)
                {
                    GameManager.Instance.AddGameGold(status.GetDamage);
                }

                yield return(new WaitForSeconds(status.GetAttackSpeed));
            }

            break;
            }

            yield return(null);
        }
    }