using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using GameLogic.Combat.CombatTool; using UnityEngine; using Utility.CTween; namespace GameLogic.Combat.Hero.State { public class MagicWeaponChuChangState : CombatHeroStateBasic { private CombatMagicWeaponEntity myCombatMagicWeaponEntity; private Vector3 startPos; private Vector3 endPos; private float _addTime; private float _currTime; private TimeLineEventLogicGroupBasic timeLineEventLogicGroup; private bool isUpdate; public MagicWeaponChuChangState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity) { myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity; } protected override void ProEnter() { myCombatMagicWeaponEntity.CloseLoopFx(); timeLineEventLogicGroup = combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("jihuo"); myCombatMagicWeaponEntity.GameObject.transform.eulerAngles = Vector3.zero; myCombatMagicWeaponEntity.GameObject.transform.localScale = Vector3.one; myCombatMagicWeaponEntity.GameObject.transform.rotation = myCombatMagicWeaponEntity.MagicWeaponControl .combatHeroEntity.GameObject.transform.rotation; myCombatMagicWeaponEntity.GameObject.SetActive(true); startPos = myCombatMagicWeaponEntity.MagicWeaponControl.combatHeroEntity.dotPos; float y = myCombatMagicWeaponEntity.IsEnemy ? 5: 5; float x = myCombatMagicWeaponEntity.useIndex*1.5f; endPos= myCombatMagicWeaponEntity.MagicWeaponControl.combatHeroEntity.GameObject.transform.TransformPoint( new Vector3(x - 3, y, 0)); // endPos = startPos + Vector3(x-3, y, 0); _addTime = 1.0f / (Vector3.Distance(startPos, endPos) / CustomTweenManager.AnimationCurveLibrary.fabaoMoveTopSpeed); _currTime = 0; isUpdate = true; } protected override void ProUpdate(float t) { if (!isUpdate) { return; } _currTime += t * _addTime; Vector3 pos = Vector3.Lerp(startPos, endPos, _currTime); myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(pos); if (_currTime >= 1) { isUpdate = false; if (timeLineEventLogicGroup != null) { timeLineEventLogicGroup.CloseLoopFx(); } // myCombatMagicWeaponEntity.GameObject.SetActive(true); timeLineEventLogicGroup = combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("show"); if (timeLineEventLogicGroup != null) { timeLineEventLogicGroup.TimeLineUpdateEnd = delegate() { timeLineEventLogicGroup.CloseLoopFx(); myCombatMagicWeaponEntity.isCombatState = true; myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle); }; } else { myCombatMagicWeaponEntity.isCombatState = true; myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle); } } } protected override void ProExit() { timeLineEventLogicGroup?.BreakTimeLine(myCombatMagicWeaponEntity); timeLineEventLogicGroup = null; } public override bool IsUpdateLockTarget() { return false; } protected override void ProDispose() { } } }