Main/System/Battle/Motion/MotionBase.cs
@@ -26,6 +26,10 @@
    private SkeletonIllusionShadow illusionShadow;
    private bool playingSkillAnim = false;
    private float pauseTime = 0f;
    private float resumeTime = 0f;
    public virtual void Init(SkeletonAnimation skelAnim)
    {
        skeletonAnim = skelAnim;
@@ -36,7 +40,6 @@
        }
        animState = skeletonAnim.AnimationState;
        animState.TimeScale = MotionTimeScale;
        skeletonAnim.timeScale = MotionTimeScale;
        skeleton = skeletonAnim.Skeleton;
@@ -118,6 +121,9 @@
    private Spine.TrackEntry ExecuteSkillAnim(SkillConfig skillConfig, SkillBase skillBase, Action onComplete,
        Spine.Animation targetAnim, bool hasAnim, bool isSubSkill)
    {
        bool isPangdeSkill = 1003020 == skillConfig.SkillID;
        int loopCount = skillConfig.LoopCount;
        int[] activeFrames = skillConfig.ActiveFrames ?? new int[0];
        int frameCount = activeFrames.Length;
@@ -149,9 +155,25 @@
                return;
            }
            float currentFrame = 0f;
            if (BattleConst.skillMotionFps > 0)
                currentFrame = hasAnim ? (skillTrack.TrackTime * skillTrack.TimeScale * BattleConst.skillMotionFps) : ((Time.time - startTime) * MotionTimeScale * BattleConst.skillMotionFps);
            float trackTime = 0f; //hasAnim ? skillTrack.TrackTime * skillTrack.TimeScale : (Time.time - startTime) * MotionTimeScale;
            if (hasAnim)
            {
                trackTime = skillTrack.TrackTime;
            }
            else
            {
                float adjustedTime = Time.time;
                if (pauseTime > 0f && resumeTime > pauseTime)
                {
                    startTime = startTime + (resumeTime - pauseTime);
                    pauseTime = 0f;
                    resumeTime = 0f;
                }
                trackTime = (adjustedTime - startTime) * MotionTimeScale;
            }
            float currentFrame = trackTime * BattleConst.skillMotionFps;
            if (hasAnim)
            {
@@ -314,14 +336,14 @@
    public virtual void Pause()
    {
        if (animState != null) animState.TimeScale = 0f;
        if (skeletonAnim != null) skeletonAnim.timeScale = 0f;
        pauseTime = Time.time;
    }
    public virtual void Resume()
    {
        if (animState != null) animState.TimeScale = MotionTimeScale;
        if (skeletonAnim != null) skeletonAnim.timeScale = MotionTimeScale;
        resumeTime = Time.time;
    }
    public void HaveRest()
@@ -335,7 +357,6 @@
    public void SetSpeedRatio(float ratio)
    {
        MotionTimeScale = ratio;
        if (animState != null) animState.TimeScale = ratio;
        if (skeletonAnim != null) skeletonAnim.timeScale = ratio;
    }