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));
- }
- 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);
- }
- }
- }
|