123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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<CombatHeroHitPoint>() == 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;
- }
- }
- }
|