| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | using System;using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;using CombatLibrary.CombatLibrary.CombatCore.Utility;using Core.State;using Fort23.Core;using Fort23.UTool;using Unity.AI.Navigation;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<TimeLineEventLogicGroupBasic>("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));            combatHeroEntity.CombatAIBasic.NavMeshAgent.Raycast(moveToTarget, out NavMeshHit hit);            if (!hit.hit)            {                combatHeroEntity.combatHeroGameObject.SetPosition(moveToTarget);            }            if (_currTime >= 1)            {                combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);                return;            }        }    }}
 |