From 4fde2056587a8392893ddc243b6832c17492f1a8 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 10 十月 2025 14:43:42 +0800
Subject: [PATCH] 125 战斗 散射偶尔出现特效残留的问题

---
 Main/System/Battle/SkillEffect/BulletSkillEffect.cs |   37 +++++++++++++++++++++++++------------
 1 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index d00eaf3..7d04a7a 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -12,6 +12,10 @@
     // protected List<BattleObject> targets; // 鐩爣鍒楄〃
 
     protected List<BulletCurve> bulletCurves = new List<BulletCurve>();
+    
+    // 鏁e皠鎶�鑳藉嚮涓鏁板櫒锛岀敤浜庡垽鏂槸鍚︽墍鏈夌洰鏍囬兘宸插嚮涓�
+    private int scatterHitCount = 0;
+    private int scatterTotalTargets = 0;
 
 
     public BulletSkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
@@ -297,6 +301,14 @@
     //  鏁e皠
     private void ScatterShot(int index)
     {
+        // 鍙湪绗竴娆″彂灏勬椂鍒濆鍖栨暎灏勮鏁板櫒
+        if (index == 0)
+        {
+            scatterHitCount = 0;
+            // 鎬诲嚮涓暟 = 鍙戝皠娆℃暟 脳 鐩爣鏁伴噺
+            scatterTotalTargets = skillConfig.ActiveFrames.Length * tagUseSkillAttack.HurtList.Length;
+        }
+        
         // 澶勭悊鏁e皠閫昏緫
         for (int i = 0; i < tagUseSkillAttack.HurtList.Length; i++)
         {
@@ -305,17 +317,22 @@
             if (target == null)
             {
                 Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+                // 鐩爣涓虹┖鏃跺噺灏戝搴斿彂灏勬鏁扮殑鎬荤洰鏍囨暟
+                if (index == 0) scatterTotalTargets--;
                 continue;
             }
             ScatterShot(target, hurt, index, i);
         }
     }
 
-    private void ScatterShot(BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, int index, int order)
+    private void ScatterShot(BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, int bulletIndex, int order)
     {
         BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, new List<HB427_tagSCUseSkill.tagSCUseSkillHurt> { hurt }, index, (index, hitList) =>
+        var tempOrder = order;
+
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans,
+            new List<HB427_tagSCUseSkill.tagSCUseSkillHurt> { hurt }, bulletIndex, (index, hitList) =>
         {
             foreach (var hurt in hitList)
             {
@@ -336,17 +353,13 @@
             // 鍑讳腑灏遍攢姣佸瓙寮�
             caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
 
-            if (isFinish)
-                return;
-
-            //  澶氫釜瀛愬脊鐨勬渶鍚庝竴鍙�
-            if (index >= skillConfig.ActiveFrames.Length - 1)
+            // 澧炲姞鏁e皠鍑讳腑璁℃暟
+            scatterHitCount++;
+            
+            // 鍒ゆ柇鏄惁鎵�鏈夊彂灏勬鏁扮殑鎵�鏈夌洰鏍囬兘宸插嚮涓�
+            if (scatterHitCount >= scatterTotalTargets)
             {
-                //  澶氳鑹茬殑鏈�鍚庝竴涓鑹�
-                if (order >= tagUseSkillAttack.HurtList.Length - 1)
-                {
-                    isFinish = true;
-                }
+                isFinish = true;
             }
         });
 

--
Gitblit v1.8.0