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; } } }
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); } }
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; } }
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; } }
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; }
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; } } }
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); } } }