| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using Core.Audio;using Fort23.Core;using GameLogic.Combat.CombatTool;using GameLogic.Combat.CombatType;using GameLogic.Combat.Hero;using UnityEngine;namespace GameLogic.Combat.CombatState{    public class CombatUpdateState : CombatStateBasic    {        /// <summary>        /// 下次遇见怪的时间        /// </summary>        private float _nextMonsterTime;                /// <summary>        /// 是否没有敌人        /// </summary>        protected bool isNullMonster;              public CombatUpdateState(CombatController combatController) : base(combatController)        {        }        protected override void ProEnter()        {            CombatController.CombatCameraControllder.isStop = false;            CombatController.IsFightState = false;            CombatController.GameTimeLineParticleFactory.RecycleAllFxAiLogicBasic();            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            if (playerHeroEntity != null)            {                playerHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Flight,isQiangZhi:true);                playerHeroEntity.CurrCombatHeroInfo.Shield = playerHeroEntity.MaxCombatHeroInfo.Shield;                CombatCalculateTool.Instance.Recover(playerHeroEntity,                    playerHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(), 999999, AttType.Normal, HarmType.Null,                    new TriggerData());            }            _nextMonsterTime = Random.Range(5, 10);            isNullMonster = true;            CombatController.MagicWeaponCombatSence.CloseSecene();            CombatController.currActiveCombat.CombatCameraControllder.SetFieldOfView(70,1);            AudioManager.Instance.PlayBGM("xunlongduobao.wav");        }        protected override void ProUpdate(float t)        {            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            if (playerHeroEntity == null)            {                return;            }            if (isNullMonster)            {                _nextMonsterTime -= t;                            if (_nextMonsterTime < 0)                {                      _nextMonsterTime = Random.Range(PlayerManager.Instance.gameConstantConfig.GuajiCD[0], PlayerManager.Instance.gameConstantConfig.GuajiCD[1]);                   // EventSystemManager.Instance.DetectRandomEvents();                   EventManager.Instance.Dispatch(CustomEventType.DetectRandomEvent,null);                }            }            CombatHeroEntity[] allHero =                CombatController.currActiveCombat.CombatHeroController.GetHero(true,out int maxCount);            if (maxCount > 0)            {                // CombatController.ChangeState("fight");                return;            }                        float add = 0.1f;            Vector3 pos = playerHeroEntity.dotPos;            Vector3 dir =  CombatController.currActiveCombat.CombatSenceController.moveDir;            float fx = 1;                        pos += dir.normalized * CombatController.currActiveCombat.CombatHeroController.moveSpeed * t;            playerHeroEntity.combatHeroGameObject.SetPosition(pos);            playerHeroEntity.GameObject.transform.rotation = Quaternion.LookRotation(dir * fx);            CombatController.CombatHeroController.Update(t);            CombatController.CombatCameraControllder.Update(t);            CombatController.GameTimeLineParticleFactory.CombatUpdate(t);        }        protected IHero FindMinDixtance(CombatHeroEntity[] allHero,int maxCount)        {            IHero minDistanceHero = null;            if (allHero == null)            {                return null;            }            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            float minDistance = float.MaxValue;            for (int i = 0; i < maxCount; 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 < 225)                {                    // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100)                    {                        minDistance = distance;                        minDistanceHero = hero;                    }                }            }            return minDistanceHero;        }    }}
 |