From 1f9d43e8c0d6e72b91fc0c31eef5e3fe0897bea2 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 19 一月 2026 10:29:50 +0800
Subject: [PATCH] 125 修复 部分战斗卡死
---
Main/System/Battle/Motion/MotionBase.cs | 54 ++++++++++++++++++++-------
Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs | 20 ++++------
2 files changed, 48 insertions(+), 26 deletions(-)
diff --git a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
index e6cb300..f7335ed 100644
--- a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
@@ -110,19 +110,15 @@
if (isCast)
return;
- Played();
-
- if (fromSkill != null)
+ if (skillBase.caster.motionBase.CanCastSkill(skillBase.skillConfig))
{
- BattleDebug.LogError("cast skill from skill : " + fromSkill.skillConfig.SkillID);
+ // Debug.LogError("cast skill id is " + skillBase.skillConfig.SkillID);
+
+ skillBase.fromSkill = fromSkill;
+
+ skillBase.Cast();
+
+ isCast = true;
}
-
- // Debug.LogError("cast skill id is " + skillBase.skillConfig.SkillID);
-
- skillBase.fromSkill = fromSkill;
-
- skillBase.Cast();
-
- isCast = true;
}
}
\ No newline at end of file
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index f8299ba..a8c44a3 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -31,7 +31,9 @@
private Dictionary<SkillBase, int> subSkillTrackMap = new Dictionary<SkillBase, int>();
private SkeletonIllusionShadow illusionShadow;
- private bool playingSkillAnim = false;
+ private bool playingSkill = false;
+
+ private bool playingSkillWithAnim = false;
private bool isUnderControl = false;
@@ -85,12 +87,13 @@
skeletonAnim = null;
skeleton = null;
currentTrack = null;
- playingSkillAnim = false;
+ playingSkill = false;
+ playingSkillWithAnim = false;
}
public virtual Spine.TrackEntry PlayAnimation(MotionName motionName, bool loop, Action onComplete = null)
{
- if (playingSkillAnim || animState == null) return null;
+ if (playingSkill || animState == null) return null;
if (currentTrack != null && !currentTrack.IsComplete && trackEntryCallbacks.TryGetValue(currentTrack, out var prevCallback))
{
@@ -253,9 +256,11 @@
currentTrack = skillTrack;
activeSkillTracks[trackIndex] = skillTrack;
+
+ playingSkillWithAnim = true;
}
- playingSkillAnim = true;
+ playingSkill = true;
int currentLoop = 0, triggerCount = 0, failCount = 0;
bool beginTriggered = false, finalStarted = false, finalEnded = false, middleStarted = false;
@@ -291,7 +296,13 @@
// 鍙湁褰撴病鏈夊叾浠栨椿璺冩妧鑳芥椂鎵嶅浣� playingSkillAnim
if (activeSkillTracks.Count == 0)
- playingSkillAnim = false;
+ {
+ playingSkillWithAnim = false;
+ playingSkill = false;
+ }
+
+
+
RemoveAction(frameHandler);
return;
@@ -336,7 +347,10 @@
}
if (activeSkillTracks.Count == 0)
- playingSkillAnim = false;
+ {
+ playingSkill = false;
+ playingSkillWithAnim = false;
+ }
return;
}
@@ -358,7 +372,10 @@
}
if (activeSkillTracks.Count == 0)
- playingSkillAnim = false;
+ {
+ playingSkillWithAnim = false;
+ playingSkill = false;
+ }
return;
}
}
@@ -451,13 +468,18 @@
// 鍙湁褰撴病鏈夊叾浠栨椿璺冩妧鑳芥椂鎵嶅浣� playingSkillAnim
if (activeSkillTracks.Count == 0)
- playingSkillAnim = false;
+ {
+ playingSkill = false;
+ }
RemoveAction(frameHandler);
onComplete?.Invoke();
skillBase.OnFinalFrameEnd();
if (hasAnim)
+ {
+ playingSkillWithAnim = false;
skillTrack = null;
+ }
}
}
};
@@ -533,7 +555,7 @@
if (entry == null)
{
// playingSkillAnim || animState == null
- Debug.LogError("SetControledAnimation PlayAnimation hit failed : reason : " + (playingSkillAnim ? "playingSkillAnim" : "animState == null"));
+ Debug.LogError("SetControledAnimation PlayAnimation hit failed : reason : " + (playingSkill ? "playingSkillAnim" : "animState == null"));
return;
}
@@ -618,7 +640,7 @@
currentTrack = null;
- playingSkillAnim = false;
+ playingSkill = false;
PlayAnimation(MotionName.idle, true);
}
@@ -651,7 +673,7 @@
currentTrack = null;
// 5. 閲嶇疆鎵�鏈夌姸鎬佹爣蹇�
- playingSkillAnim = false;
+ playingSkill = false;
isUnderControl = false;
// 6. 閲嶇疆鏃堕棿鐩稿叧瀛楁锛堝叧閿紒锛�
@@ -694,9 +716,13 @@
}
}
- public bool CanCastSkill()
+ public bool CanCastSkill(SkillConfig skillConfig)
{
- // 涓婃閲婃斁鐨勬妧鑳� 閲婃斁缁撴潫浜嗘病鏈�
- return !playingSkillAnim;
+ return !playingSkillWithAnim || string.IsNullOrEmpty(skillConfig.SkillMotionName);
+ }
+
+ public bool CanStartDeath()
+ {
+ return !playingSkillWithAnim;
}
}
\ No newline at end of file
--
Gitblit v1.8.0