using UnityEngine; namespace GameLogic.Combat.Hero.State { public class CombatHeroIdleState : CombatHeroStateBasic { public CombatHeroIdleState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity) { } protected override void ProEnter() { combatHeroEntity.combatHeroAnimtion.Play("idle"); } protected override void ProUpdate(float t) { if (combatHeroEntity.CombatAIBasic.currFocusTarget == null) { return; } Vector3 targetPos = combatHeroEntity.CombatAIBasic.currFocusTarget.dotPos; Vector3 myPos = combatHeroEntity.dotPos; float dis = combatHeroEntity.CurrCombatHeroInfo.maxDisTo; if (combatHeroEntity.CombatAIBasic.currFocusTarget is BannerHero) { dis = 1; } if (Vector3.SqrMagnitude(targetPos - myPos) >dis) { combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.move); } else { { Vector3 nextPos = combatHeroEntity.CombatAIBasic.currFocusTarget.dotPos; Vector3 p = nextPos - combatHeroEntity.dotPos; if (p.sqrMagnitude > 0.00001) { float dot = Vector3.Dot(p.normalized, combatHeroEntity.combatHeroGameObject.transform.forward); if (dot < 0.95f) { Quaternion.LookRotation(p.normalized); combatHeroEntity.combatHeroGameObject.rotation = Quaternion.Lerp( combatHeroEntity.combatHeroGameObject.rotation, Quaternion.LookRotation(p.normalized), 0.5f); return; } } if (combatHeroEntity.CombatHeroSkillControl.CanReleaseSkill() != null) { combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.att); } } } } } }