using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; using UnityEngine; namespace GameLogic.Combat.CombatState { public class CombatFightState : CombatStateBasic { public CombatFightState(CombatController combatController) : base(combatController) { } protected override void ProEnter() { CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity; CombatController.CombatCameraControllder.SetPos(playerHeroEntity.combatHeroGameObject.transform); CombatController.CombatCameraControllder.isStop = true; CombatController.IsFightState = true; } protected override void ProExit() { CombatController.CombatCameraControllder.isStop = false; } protected override void ProUpdate(float t) { CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity; if (playerHeroEntity == null) { return; } CombatHeroEntity[] allHero = CombatController.currActiveCombat.CombatHeroController.GetHero(true); IHero ihero = FindMinDixtance(allHero); if (ihero == null) { CombatController.ChangeState("update"); return; } CombatController.CombatHeroController.Update(t); CombatController.CombatCameraControllder.Update(t); CombatController.GameTimeLineParticleFactory.CombatUpdate(t); } protected IHero FindMinDixtance(CombatHeroEntity[] allHero) { IHero minDistanceHero = null; if (allHero == null) { return null; } CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.CombatHeroController.playerHeroEntity; float minDistance = float.MaxValue; for (int i = 0; i < allHero.Length; i++) { CombatHeroEntity hero = allHero[i]; if (hero.GetMainHotPoin() == null) { continue; } float distance = Vector3.SqrMagnitude(hero.combatHeroGameObject.position - playerHeroEntity.combatHeroGameObject.position); if (distance < minDistance&& distance < 500) { // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100) { minDistance = distance; minDistanceHero = hero; } } } return minDistanceHero; } } }