| | |
| | | resumeTime = Time.time; |
| | | } |
| | | |
| | | // 原有的 HaveRest 保持不变,用于一般的重置 |
| | | public void HaveRest() |
| | | { |
| | | animState?.ClearTracks(); |
| | |
| | | PlayAnimation(MotionName.idle, true); |
| | | } |
| | | |
| | | // 新增:专门用于复活的完整重置方法 |
| | | public void ResetForReborn() |
| | | { |
| | | // 1. 清理所有动画轨道(包括死亡动画的轨道9) |
| | | animState?.ClearTracks(); |
| | | |
| | | // 2. 清理所有回调和动作队列 |
| | | trackEntryCallbacks.Clear(); |
| | | runningActions.Clear(); |
| | | activeSkillTracks.Clear(); |
| | | |
| | | // 3. 重置子技能轨道池 |
| | | if (availableSubTracks == null) |
| | | availableSubTracks = new Queue<int>(); |
| | | else |
| | | availableSubTracks.Clear(); |
| | | |
| | | subSkillTrackMap.Clear(); |
| | | for (int i = 1; i <= 8; i++) |
| | | availableSubTracks.Enqueue(i); |
| | | |
| | | // 4. 清空轨道引用 |
| | | currentTrack = null; |
| | | |
| | | // 5. 重置所有状态标志 |
| | | playingSkillAnim = false; |
| | | isUnderControl = false; |
| | | |
| | | // 6. 重置时间相关字段(关键!) |
| | | pauseTime = 0f; |
| | | resumeTime = 0f; |
| | | pausedAccumulated = 0f; |
| | | pauseStart = 0f; |
| | | |
| | | // 7. 重置时间缩放为正常速度 |
| | | MotionTimeScale = 1f; |
| | | if (skeletonAnim != null) |
| | | skeletonAnim.timeScale = MotionTimeScale; |
| | | |
| | | // 8. 清理残影效果 |
| | | if (illusionShadow != null) |
| | | illusionShadow.Show(false); |
| | | |
| | | // 9. 重置骨骼到初始姿态(关键!防止死亡姿态残留) |
| | | if (skeleton != null) |
| | | { |
| | | skeleton.SetToSetupPose(); |
| | | // skeleton.UpdateWorldTransform(); |
| | | } |
| | | |
| | | // 10. 播放待机动画 |
| | | PlayAnimation(MotionName.idle, true); |
| | | } |
| | | |
| | | public void SetSpeedRatio(float ratio) |
| | | { |
| | | MotionTimeScale = ratio; |
| | |
| | | } |
| | | } |
| | | |
| | | internal void ResetToIdleAnimation() |
| | | { |
| | | // 清空之前的状态 |
| | | HaveRest(); |
| | | } |
| | | } |