| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | using Core.Audio;using GameLogic.Combat.CombatTool;using GameLogic.Combat.CombatTool.CombatReport;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.playerHeroEntity;            CombatController.CombatCameraControllder.SetPos(playerHeroEntity.combatHeroGameObject.transform);            CombatController.CombatCameraControllder.isStop = true;            CombatController.IsFightState = true;            CombatController.currActiveCombat.CombatCameraControllder.SetFieldOfView(60, 3);            int odds = Random.Range(0, 100);            if (odds < 50)                AudioManager.Instance.PlayBGM("battle2.mp3");            else            {                AudioManager.Instance.PlayBGM("battle1.mp3");            }            CombatController.currActiveCombat.CombatCameraControllder.EnterCombat();        }        protected override void ProExit()        {            CombatController.currActiveCombat.CombatCameraControllder.ExitCombat();            CombatController.CombatCameraControllder.isStop = false;        }        protected override void ProUpdate(float t)        {            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            if (playerHeroEntity == null)            {                return;            }                      CombatHeroEntity[] allHero =                CombatController.currActiveCombat.CombatHeroController.GetHero(true, out int maxCount);            IHero ihero = FindMinDixtance(allHero, maxCount, 500);            if (ihero == null)            {                CombatController.ChangeState("update");                return;            }            IHero ihero2 = FindMinDixtance(allHero, maxCount, 225);            if (ihero2 == null)            {                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, int maxDis)        {            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 < maxDis)                {                    // if (!_combatHeroEntity.IsEnemy || distance < _combatHeroEntity.CurrCombatHeroInfo.maxDisTo + 100)                    {                        minDistance = distance;                        minDistanceHero = hero;                    }                }            }            return minDistanceHero;        }    }}
 |