From 2668ee0c8bb360ce8909d88796e3f87abc393773 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 19 十一月 2025 10:02:55 +0800
Subject: [PATCH] 125 战斗 弹射支持

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

diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index 603fff8..77a1466 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -380,27 +380,61 @@
 
         effectPlayer.Alpha = shotToSelf ? 0f : 1f;
 
+        int bounceHitIndex = 0;
+
         var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
         {
-            foreach (var hurt in hitList)
+            if (skillConfig.BulletPath == 4)
             {
+                if (bounceHitIndex >= hitList.Count)
+                {
+                    return;
+                }
+                var hurt = hitList[bounceHitIndex++];
                 BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
-                if (targetObj == null)
+                if (targetObj != null)
+                {
+                    PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp);
+                    PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp);
+                    PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
+                    PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp);
+                }
+                else
                 {
                     Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
-                    continue;
                 }
 
-                PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp);
-                PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp);
-                PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
-                PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp);
-            }
+                // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
+                onHit?.Invoke(index, new List<HB427_tagSCUseSkill.tagSCUseSkillHurt> { hurt });
 
-            // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
-            onHit?.Invoke(index, hitList);
-            // 鍑讳腑灏遍攢姣佸瓙寮�
-            caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+                if (bulletIndex == tagUseSkillAttack.HurtList.Length - 1)
+                {
+                    caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+                }
+            }
+            else
+            {
+                foreach (var hurt in hitList)
+                {
+                    BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+                    if (targetObj == null)
+                    {
+                        Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+                        continue;
+                    }
+
+                    PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp);
+                    PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp);
+                    PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
+                    PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp);
+                }
+
+                // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
+                onHit?.Invoke(index, hitList);
+                // 鍑讳腑灏遍攢姣佸瓙寮�
+
+                caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+            }
 
             if (isFinish)
                 return;
@@ -414,6 +448,8 @@
         bulletCurves.Add(bulletCurve);
     }
 
+    
+
     protected void PlayExplosionEffect(int effectId, Transform parent, BattleCamp camp)
     {
         if (effectId <= 0)

--
Gitblit v1.8.0