| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | using Excel2Json;using Fort23.Core;using Fort23.UTool;using GameLogic.Combat.CombatTool;using GameLogic.Combat.Hero;using UnityEngine;using Utility.UITool;namespace GameLogic.Combat.CombatState{    public class CombatSceneSwitchState : CombatStateBasic    {        private Vector3 dir;        private Vector3 moveTargetDir;        private float currTime;        private int state;        private Vector3 startPos;        private Vector3 startEulerAngles;        private float speed=0.5f;        private float feiXingCurTime;        public CombatSceneSwitchState(CombatController combatController) : base(combatController)        {        }        protected override void ProEnter()        {            CombatController.CombatCameraControllder.isStop = true;            CombatController.IsFightState = false;            CombatController.GameTimeLineParticleFactory.RecycleAllFxAiLogicBasic();            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            if (playerHeroEntity != null)            {                playerHeroEntity.PlayAnim(CombatHeroStateType.idle, true, 0, false, 1);                CombatController.MagicWeaponCombatSence.CloseSecene();            }            startPos = playerHeroEntity.GameObject.transform.position;            startEulerAngles = playerHeroEntity.GameObject.transform.rotation.eulerAngles;            // CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            Vector3 target = playerHeroEntity.GameObject.transform.TransformPoint(new Vector3(2, 2, 1));            moveTargetDir = (target - playerHeroEntity.GameObject.transform.forward).normalized;            dir = playerHeroEntity.GameObject.transform.forward;            currTime = 0;            state = 0;            feiXingCurTime = 0;        }        protected override void ProUpdate(float t)        {            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            if (playerHeroEntity == null)            {                return;            }            currTime += t;            if (currTime > 2 && state == 0)            {                state = 1;                EventManager.Instance.Dispatch(CustomEventType.ShowLoadingUI, null);                InitScenes();                currTime = 0;            }            if (state == 2)            {                return;            }            feiXingCurTime += t * speed;            float dirT = AnimationCurveManager.Instance.AnimationCurveLibrary.switchSceneCurve.Evaluate(feiXingCurTime);            Vector3 pos = playerHeroEntity.dotPos;            Vector3 currDir = Vector3.Lerp(dir, moveTargetDir, dirT);            pos += currDir.normalized * 15 * t;            playerHeroEntity.combatHeroGameObject.SetPosition(pos);            playerHeroEntity.GameObject.transform.rotation =                Quaternion.LookRotation(new Vector3(currDir.x, 0, currDir.z).normalized);        }        private async void InitScenes()        {            await TimerComponent.Instance.WaitAsync(2600);            state = 2;            CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;            playerHeroEntity.GameObject.transform.position = startPos;            playerHeroEntity.GameObject.transform.rotation = Quaternion.Euler(startEulerAngles);            SmallPlacesConfig smallPlacesConfig =                ConfigComponent.Instance.Get<SmallPlacesConfig>(PlayerManager.Instance.CurrentsmallPlaces.id);            await CombatController.CombatSenceController.InitScenes(smallPlacesConfig.scencName);            EventManager.Instance.Dispatch(CustomEventType.CloseLoadingUI, null);            CombatController.CombatCameraControllder.isStop = false;            CombatController.ChangeState(CombatController.fight);        }    }}
 |