示例#1
0
 void Start()
 {
     mHero = transform.parent.GetComponent<Hero_Control>();
     if (mHero == null)
     {
         Debug.LogError("Class : HeroActionEvent => mHero is null");
     }
 }
示例#2
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;
            }
        }
    }
示例#3
0
    eAttPos MoveDir(Hero_Control targetHero, ref int iCount)
    {
        Battle_Control bc = GameMain.Instance().BattleControl;
        if (bc == null) return eAttPos.ATTPOS_NONE;

        eAttPos eResultPos = eAttPos.ATTPOS_NONE;

        bool bPosLeft = false;
        Vector3 vDir = targetHero.transform.position - transform.position;
        if (vDir.x > 0)
        {
            bPosLeft = true;
        }

        if (MyTeam)
        {
            mListAttPos = bc.ListMyHeroes;
        }
        else
        {
            mListAttPos = bc.ListEnemyHeroes;
        }

        int iLeftAttPosCount = 0;
        int iRightAttPosCount = 0;
        for (int i = 0; i < mListAttPos.Count; ++i)
        {
            if (mListAttPos[i] == this) continue;
            if (mListAttPos[i].AttPos == eAttPos.ATTPOS_NONE) continue;
            if (mListAttPos[i].Target == null) continue;

            if (targetHero.HeroUid.Equals(mListAttPos[i].Target.HeroUid))
            {
                if ((int)mListAttPos[i].AttPos < (int)eAttPos.ATTPOS_RIGHT)
                {
                    iLeftAttPosCount++;
                }
                else
                {
                    iRightAttPosCount++;
                }
            }
        }

        if (bPosLeft)
        {
            if (iLeftAttPosCount == ATTPOS_MAXCOUNT)
            {
                iCount = iRightAttPosCount;
                eResultPos = eAttPos.ATTPOS_RIGHT;
            }
            else
            {
                iCount = iLeftAttPosCount;
                eResultPos = eAttPos.ATTPOS_LEFT;
            }
        }
        else
        {
            if (iRightAttPosCount == ATTPOS_MAXCOUNT)
            {
                iCount = iLeftAttPosCount;
                eResultPos = eAttPos.ATTPOS_LEFT;
            }
            else
            {
                iCount = iRightAttPosCount;
                eResultPos = eAttPos.ATTPOS_RIGHT;
            }
        }

        return eResultPos;
    }
示例#4
0
 void FaceTo(Hero_Control targetHero)
 {
     Vector3 vDir = targetHero.transform.position - transform.position;
     if (vDir.x > 0)
     {
         HeroObj.transform.localRotation = Quaternion.Euler(0, 180, 0);
     }
     else
     {
         HeroObj.transform.localRotation = Quaternion.Euler(0, 0, 0);
     }
 }
示例#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;
    }
示例#6
0
    public void OnBeHit(Hero_Control atthero, int iSkillNo )
    {
        if (IsDie) return;

        if (DamagedHero(atthero, iSkillNo))
        {
            StartCoroutine(DamagedHeroColor(0.1f));

            //mHeroState = eHeroState.HEROSTATE_HIT;
        }
    }