using System; using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using CombatLibrary.CombatLibrary.CombatCore.Utility; using Core.State; using Fort23.Core; using UnityEngine; using UnityEngine.AI; namespace GameLogic.Combat.Hero.State { public class CombatHeroRollingState : CombatHeroStateBasic { public class RollingStateData : CObject, IStateEnterData { public Vector3 dir; public override void ActiveObj() { } public override void DormancyObj() { } } protected float speed = 1.3f; protected float dis = 3; private float _currTime; private Vector3 targetPos; private Vector3 startPos; protected ACurve ACurve; private RollingStateData _rollingStateData; public CombatHeroRollingState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity) { } public override bool IsUpdateLockTarget() { return false; } protected override void ProEnter() { _rollingStateData = iStateEnterData as RollingStateData; combatHeroEntity.combatHeroAnimtion.Play("idle"); // TimeLineEventLogicGroupBasic timeLineEventLogicGroup = // combatHeroEntity.combatHeroTimeLineControl.TimeLineData // .GetTimeLineEventLogicGroup("fangun1", null); // try // { // timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null); // timeLineEventLogicGroup.TimeLineUpdateEnd = delegate { }; // combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup); // } // catch (Exception e) // { // LogTool.Error(e); // } // ACurve = combatHeroEntity.combatHeroTimeLineControl.TimeLineData.GetTimeLineEventACurve("fangun1", "fangun", // null); Vector3 dir = combatHeroEntity.faceDir; if (_rollingStateData != null) { dir = _rollingStateData.dir; } combatHeroEntity.GameObject.transform.rotation.SetLookRotation(dir); startPos = combatHeroEntity.dotPos; targetPos = startPos + dir * -dis; _currTime = 0; } protected override void ProExit() { CObjectPool.Instance.Recycle(_rollingStateData); _rollingStateData = null; } protected override void ProUpdate(float t) { _currTime += t * speed; Vector3 moveToTarget = Vector3.Lerp(startPos, targetPos, ACurve.Evaluate(_currTime)); } } }