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