| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 | 
							- using Common.Utility.CombatEvent;
 
- using Core.State;
 
- using Fort23.Core;
 
- using GameLogic.Combat.CombatState;
 
- using GameLogic.Combat.CombatTool;
 
- using GameLogic.Combat.Hero.State;
 
- using GameLogic.Combat.Hero.SubStatus;
 
- using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
 
- using UnityEngine;
 
- namespace GameLogic.Combat.Hero
 
- {
 
-     public class CombatHeroAi : CombatAIBasic
 
-     {
 
-         // public NavMeshObstacle NavMeshObstacle;
 
-         protected CombatHeroEntity _combatHeroEntity
 
-         {
 
-             get { return _showBaiscEntity as CombatHeroEntity; }
 
-         }
 
-         protected float _r = 5;
 
-         public bool isAlert;
 
-         /// <summary>
 
-         /// 当前聚焦的目标
 
-         /// </summary>
 
-         public override CombatHeroEntity currFocusTarget
 
-         {
 
-             get { return _currFocusTarget; }
 
-             set
 
-             {
 
-                 if (value == _currFocusTarget)
 
-                 {
 
-                     return;
 
-                 }
 
-                 CombatHeroTargetAlterEventData combatHeroTargetAlterEventData = CombatHeroTargetAlterEventData.Create();
 
-                 combatHeroTargetAlterEventData.combatHeroEntity = _combatHeroEntity;
 
-                 combatHeroTargetAlterEventData.targetCombatHeroEntity = value;
 
-                 combatHeroTargetAlterEventData.lasetCombatHeroEntity = _currFocusTarget;
 
-                 CombatEventManager.Instance.Dispatch(CombatEventType.TargetAlter, combatHeroTargetAlterEventData);
 
-                 _currFocusTarget = value;
 
-             }
 
-         }
 
-         private BetterList<GameObject> _areaList = new BetterList<GameObject>();
 
-         private BetterList<GameObject> _HindAreaList = new BetterList<GameObject>();
 
-         private float _t;
 
-         public GameObject[] AreaList
 
-         {
 
-             get { return _areaList.ToArray(); }
 
-         }
 
-         protected override void ProInit()
 
-         {
 
-             CombatEventManager.Instance.AddEventListener(CombatEventType.AlertTrigger, AlertTrigger);
 
-         }
 
-         protected void AlertTrigger(IEventData iEventData)
 
-         {
 
-             AlertTriggerEventData alertTriggerEventData = iEventData as AlertTriggerEventData;
 
-             if (alertTriggerEventData.combatHeroEntity == _combatHeroEntity)
 
-             {
 
-                 if (alertTriggerEventData.isTrigger && !_areaList.Contains(alertTriggerEventData.triggerObject))
 
-                 {
 
-                     _areaList.Add(alertTriggerEventData.triggerObject);
 
-                 }
 
-                 else if (!alertTriggerEventData.isTrigger)
 
-                 {
 
-                     _areaList.Remove(alertTriggerEventData.triggerObject);
 
-                     _HindAreaList.Remove(alertTriggerEventData.triggerObject);
 
-                 }
 
-             }
 
-         }
 
-         protected override void ProInitState()
 
-         {
 
-             stateControl.AddState(CombatHeroStateType.idle, new CombatHeroIdleState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.move, new CombatHeroMoveState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.att, new CombatHeroAttState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.dile, new CombatHeroDieState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.rolling, new CombatHeroRollingState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.followMove, new CombatHeroFollowMoveState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.followIdle, new CombatHeroFollowIdleState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.NullState, new CombatHeroNullState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.Active, new CombatHeroActiveState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.XiuMian, new CombatHeroXiuMianState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.Resurrection, new CombatResurrectionState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.PickUp, new CombatHeroPickUpState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.Flight, new CombatHeroFlightState(_combatHeroEntity));
 
-             stateControl.AddState(CombatHeroStateType.Disappear, new CombatHeroDisappearState(_combatHeroEntity));
 
-         }
 
-         public override void Update(float t)
 
-         {
 
-             if (CombatController.currActiveCombat.isStopAi)
 
-             {
 
-                 if (stateControl.CurrStateName.Equals(CombatHeroStateType.move))
 
-                 {
 
-                     stateControl.ChangeState(CombatHeroStateType.idle);
 
-                 }
 
-                 return;
 
-             }
 
-             for (int i = 0; i < _areaList.Count; i++)
 
-             {
 
-                 if (!_areaList[i].activeSelf)
 
-                 {
 
-                     _HindAreaList.Remove(_areaList[i]);
 
-                     _areaList.RemoveAt(i);
 
-                     i--;
 
-                 }
 
-             }
 
-             for (int i = 0; i < _subStatusList.Count; i++)
 
-             {
 
-                 SubStatusBasic subStatusBasic = _subStatusList[i];
 
-                 string s = subStatusBasic.IsGetStateName();
 
-                 if (!string.IsNullOrEmpty(s))
 
-                 {
 
-                     stateControl.ChangeState(s);
 
-                 }
 
-                 _subStatusList[i].Update(t);
 
-             }
 
-             if (CombatController.currActiveCombat.IsFightState)
 
-             {
 
-                 if (currFocusTarget == null || currFocusTarget.isDie ||
 
-                     (currFocusTarget is BannerHero && !_combatHeroEntity.IsEnemy))
 
-                 {
 
-                     CombatHeroEntity[] allHero =
 
-                         CombatController.currActiveCombat.CombatHeroController.GetHero(!_combatHeroEntity.IsEnemy);
 
-                     IHero minDistanceHero = FindMinDixtance(allHero);
 
-                     currFocusTarget = minDistanceHero as CombatHeroEntity;
 
-                     if (!_combatHeroEntity.IsEnemy && currFocusTarget == null)
 
-                     {
 
-                         currFocusTarget = CombatController.currActiveCombat.CombatTypeBasic.currBannerHero;
 
-                     }
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 currFocusTarget = null;
 
-             }
 
-             stateControl.Update(t);
 
-             if (currFocusTarget != null && CurrState != null && CurrState.IsUpdateLockTarget() &&
 
-                 !_combatHeroEntity.isDie && !isAlert)
 
-             {
 
-                 Vector3 nextPos = currFocusTarget.dotPos;
 
-                 Vector3 p = nextPos - _combatHeroEntity.dotPos;
 
-                 if (p.sqrMagnitude > 0.00001)
 
-                 {
 
-                     _combatHeroEntity.combatHeroGameObject.rotation = Quaternion.Lerp(
 
-                         _combatHeroEntity.combatHeroGameObject.rotation, Quaternion.LookRotation(p.normalized),
 
-                         0.5f);
 
-                 }
 
-             }
 
-             ProUpdate();
 
-             if (currFocusTarget != null)
 
-             {
 
-                 _combatHeroEntity.GameObject.transform.rotation =
 
-                     Quaternion.LookRotation(currFocusTarget.dotPos - _combatHeroEntity.dotPos);
 
-             }
 
-         }
 
-         protected IHero FindMinDixtance(CombatHeroEntity[] allHero)
 
-         {
 
-             IHero minDistanceHero = null;
 
-             if (allHero == null)
 
-             {
 
-                 return null;
 
-             }
 
-             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 -
 
-                                                       _combatHeroEntity.combatHeroGameObject.position);
 
-                 if (distance < minDistance)
 
-                 {
 
-                     // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100)
 
-                     {
 
-                         minDistance = distance;
 
-                         minDistanceHero = hero;
 
-                     }
 
-                 }
 
-             }
 
-             return minDistanceHero;
 
-         }
 
-         protected override void ProDispose()
 
-         {
 
-             CombatEventManager.Instance.RemoveEventListener(CombatEventType.AlertTrigger, AlertTrigger);
 
-         }
 
-     }
 
- }
 
 
  |