123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using Fort23.Core;
- using GameLogic.Combat.CombatTool;
- using GameLogic.Combat.Hero;
- using UnityEngine;
- 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;
- 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(1, 2, 1));
- moveTargetDir = (target - playerHeroEntity.GameObject.transform.forward).normalized;
- currTime = 0;
- state = 0;
- }
- protected override void ProUpdate(float t)
- {
- CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;
- if (playerHeroEntity == null)
- {
- return;
- }
- currTime += t;
- if (currTime > 3 && state == 0)
- {
- state = 1;
- EventManager.Instance.Dispatch(CustomEventType.ShowLoadingUI, null);
- InitScenes();
- currTime = 0;
- }
- if (state == 2)
- {
- return;
- }
- Vector3 pos = playerHeroEntity.dotPos;
- Vector3 currDir = Vector3.Lerp(playerHeroEntity.GameObject.transform.forward, moveTargetDir, 0.3f);
- 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(600);
- state = 2;
- CombatHeroEntity playerHeroEntity = CombatController.currActiveCombat.playerHeroEntity;
- playerHeroEntity.GameObject.transform.position = startPos;
- playerHeroEntity.GameObject.transform.rotation = Quaternion.Euler(startEulerAngles);
- await CombatController.CombatSenceController.InitScenes("LevelBattle03");
- EventManager.Instance.Dispatch(CustomEventType.CloseLoadingUI, null);
- CombatController.CombatCameraControllder.isStop = false;
- CombatController.ChangeState(CombatController.fight);
- }
- }
- }
|