Esempio n. 1
0
    void SearchTarget()
    {
        if (mTarget == null)
        {
            mTarget = GetAggroHero();
            //if (mTarget == null)
            //{
            //    mActor.PlayAnimation(Actor.AnimationActor.ANI_IDLE, true);
            //}

            //mActor.PlayAnimation(Actor.AnimationActor.ANI_IDLE);
        }
        else
        {
            //if (AttRangeCheck())
            //{
            //    mHeroState = eHeroState.HEROSTATE_ATT;
            //}
            //else
            {
                mHeroState = eHeroState.HEROSTATE_WALK;
            }
        }
    }
Esempio n. 2
0
    void Walk()
    {
        if (mTarget == null) return;

        //string stTargetPath = null;
        //int iCount = 0;
        //AttPos = MoveDir(mTarget, ref iCount);
        //if (AttPos == eAttPos.ATTPOS_NONE) return;

        //if (AttPos == eAttPos.ATTPOS_LEFT)
        //{
        //    stTargetPath = "AttackedPos/Left";
        //}
        //else if (AttPos == eAttPos.ATTPOS_RIGHT)
        //{
        //    stTargetPath = "AttackedPos/Right";
        //}

        //Transform tPos = mTarget.transform.Find(stTargetPath);
        //if (tPos == null) return;
        //Vector3 vPos = tPos.position;
        //if (iCount > 0)
        //{
        //    if (mTarget.Target != this)
        //    {
        //        vPos += new Vector3(0, 0.15f, 0);
        //    }
        //}

        Vector3 vPos = mTarget.transform.position;
        //float dis = Vector3.Distance(transform.position, vPos);
        //if (dis < 0.01f)

        FaceTo(mTarget);
        if (AttRangeCheck())
        {
            mIsMove = false;
            mHeroState = eHeroState.HEROSTATE_ATT;
        }
        else
        {
            Vector3 vDir = vPos - transform.position;
            vDir.Normalize();
            transform.position += vDir * Time.deltaTime * mSpeed * 2f;

            mIsMove = true;
            mActor.PlayAnimation(Actor.AnimationActor.ANI_WALK);
        }
    }
Esempio n. 3
0
    void MyStateControl()
    {
        switch ((int)mHeroState)
        {
            case (int)eHeroState.HEROSTATE_IDLE:
                Battle_Control bc = GameMain.Instance().BattleControl;
                if (bc != null)
                {
                    if (bc.BattleState == Battle_Control.eBattleState.eBattle_Ready)
                    {
                        // 전투 준비 중일 때 시작 위치로 아군이동
                        //MoveToBattleReadyPos();
                    }
                    else if (bc.BattleState == Battle_Control.eBattleState.eBattle_Ing)
                    {
                        // 피아 모두 적을 탐색
                        SearchTarget();
                    }
                    else if (bc.BattleState == Battle_Control.eBattleState.eBattle_Win)
                    {
                        // 아군 이겼을 때 포즈 후 다음 스테이지로
                        MoveToBattleEndPos();

                        if (MyTeam)
                        {
                            mHeroState = eHeroState.HEROSTATE_IDLE;
                        }
                    }
                    else if (bc.BattleState == Battle_Control.eBattleState.eBattle_Lose)
                    {
                        // 적이 이겼을 때 포즈
                        if (!MyTeam)
                        {
                            mHeroState = eHeroState.HEROSTATE_IDLE;
                        }
                    }
                }
                break;

            case (int)eHeroState.HEROSTATE_WALK:
                Walk();
                break;

            case (int)eHeroState.HEROSTATE_HIT:
                BeHit();
                break;

            case (int)eHeroState.HEROSTATE_ATT:
                AttHero();
                break;

            case (int)eHeroState.HEROSTATE_CAST:
                break;

            case (int)eHeroState.HEROSTATE_DIE:
                HeroDie();
                break;
        }
    }
Esempio n. 4
0
    void HeroDie()
    {
        if (mHeroState == eHeroState.HEROSTATE_NONE) return;

        BattleUI_Control bcUI = UIManager.Instance().GetBattleUI() as BattleUI_Control;
        if (bcUI != null)
        {
            bcUI.DestroyHPGauge(HeroUid);
            IsDie = true;
            GameMain.Instance().BattleControl.CheckEndBattle();
        }

        if (!mActor.PlayAnimation(Actor.AnimationActor.ANI_DIE1))
        {
            StartCoroutine(HeroDeathAlphaFade());
            mHeroState = eHeroState.HEROSTATE_NONE;
        }
    }
Esempio n. 5
0
    bool DamagedHero(Hero_Control atthero, int iSkillNo)
    {
        // if(immune) return false

        HP -= atthero.Atk;
        BattleUI_Control bcUI = UIManager.Instance().GetBattleUI() as BattleUI_Control;
        if (bcUI == null) return false;

        float amount =  (float)HP / (float)MaxHP;
        bcUI.UpdateHPGauge(mHeroUid, amount);

        Vector3 vPos = Camera.main.WorldToScreenPoint(mEf_HP.position);
        Vector3 vPos1 = UIManager.Instance().ScreenToWorldPoint(vPos);
        bcUI.CreateDamage(atthero.Atk, vPos1, mMyTeam);
        if (mMyTeam)
        {
            SoundManager.Instance().PlaySoundOnce("OgreHit");
        }
        else
        {
            SoundManager.Instance().PlaySoundOnce("HeroHit");
        }

        if (!mMyTeam)
        {
            GameObject goEfc = EffectManager.Instance().GetEffect(EffectManager.eEffectType.EFFECT_BATTLE_HIT);
            if (goEfc != null)
            {
                Transform tCen = HeroObj.transform.FindChild("ef_HitEfc");
                if (tCen != null)
                {
                    Battle_Control bc = GameMain.Instance().BattleControl;
                    Transform tEffect = bc.transform.FindChild("Effect");

                    goEfc.transform.parent = tEffect;
                    goEfc.transform.localPosition = tCen.position;
                    //goEfc.transform.localScale = new Vector2(2, 2);

                    Renderer[] pcs = goEfc.GetComponentsInChildren<Renderer>();
                    if (pcs != null)
                    {
                        for (int i = 0; i < pcs.Length; ++i)
                        {
                            Renderer render = pcs[i];
                            if (render != null)
                            {
                                render.sortingOrder = MaxSortingOrderNo;
                                render.sortingLayerName = "Hero";
                            }
                        }
                    }

                    //ParticleSystem[] pcs = goEfc.GetComponentsInChildren<ParticleSystem>();
                    //if (pcs != null)
                    //{
                    //    for (int i = 0; i < pcs.Length; ++i)
                    //    {
                    //        Renderer render = pcs[i].GetComponent<Renderer>();
                    //        if (render != null)
                    //        {
                    //            render.sortingOrder = MaxSortingOrderNo;
                    //            render.sortingLayerName = "Hero";
                    //        }
                    //    }
                    //}
                }
            }
        }

        if (HP <= 0)
        {
            mHeroState = eHeroState.HEROSTATE_DIE;
            return false;
        }
        else
        {
            Vector3 vDir = atthero.transform.position - transform.position;
            vDir.Normalize();
            if (vDir.x > 0)
            {
                mBlowDir = 1;
            }
            else
            {
                mBlowDir = -1;
            }

            mBlowTime = atthero.BlowPower;
        }

        return true;
    }
Esempio n. 6
0
    void BeHit()
    {
        //if (mActor.IsPlaying(Actor.AnimationActor.ANI_ATT1))
        //{
        //    return;
        //}

        if (!mActor.PlayAnimation(Actor.AnimationActor.ANI_HIT))
        {
            if (mIsMove)
            {
                mHeroState = eHeroState.HEROSTATE_WALK;
            }
            else
            {
                mHeroState = eHeroState.HEROSTATE_IDLE;
            }
        }
    }
Esempio n. 7
0
    void AttHero()
    {
        if (mTarget != null && mTarget.IsDie)
        {
            mHeroState = eHeroState.HEROSTATE_IDLE;
            return;
        }

        if (!mActor.PlayAnimation(Actor.AnimationActor.ANI_ATT1))
        {
            mActor.SetAnimationSpeed(1f);
            mHeroState = eHeroState.HEROSTATE_IDLE;
        }
        else
        {
            if (mMyTeam)
            {
                mActor.SetAnimationSpeed(0.7f);
            }
            else
            {
                mActor.SetAnimationSpeed(0.5f);
            }
        }
    }