From 44611c79d167fda9d2c4ba05435a9d84bfd5a4a6 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 07 十月 2025 16:17:49 +0800
Subject: [PATCH] 125 战斗 散射伤害有问题,会出现多次飘血,司马懿可测试
---
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 68 ++++++++++++++++++++++++++++++++--
1 files changed, 64 insertions(+), 4 deletions(-)
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index a70f0cd..3d014c9 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -19,6 +19,7 @@
{
}
+
public override void OnMiddleFrameEnd(int times, int index)
@@ -43,7 +44,7 @@
if (skillConfig.Scattering == 1)
{
// 鏁e皠
- ShotEachTargets(index);
+ ScatterShot(index);
}
else
{
@@ -89,7 +90,7 @@
{
// 鑻agCount鐩爣涓暟涓�1~5涓紝浠h〃闅忔満浣滅敤浜庢晫鏂规垨鎴戞柟x涓灏嗭紝姝ゆ椂鎵�鏈夎闅忔満鍒扮殑瀵硅薄閮戒负涓荤洰鏍囷紙鏂芥硶浣嶇疆浼氱敤瀹㈡埛绔厤缃級
ShotEachTargets(index);
- }
+ }
}
// 1 瀵逛綅锛�
@@ -171,7 +172,7 @@
RectTransform effectTrans = effectPlayer.transform as RectTransform;
- var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack, bulletIndex, (index, hitList) =>
+ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
{
if (isFinish)
return;
@@ -293,11 +294,70 @@
ShotToIndex(caster.Camp, caster.teamHero.positionNum, index);
}
+
+ private void ScatterShot(int index)
+ {
+ // 澶勭悊鏁e皠閫昏緫
+ for (int i = 0; i < tagUseSkillAttack.HurtList.Length; i++)
+ {
+ var hurt = tagUseSkillAttack.HurtList[i];
+ BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+ if (target == null)
+ {
+ Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+ continue;
+ }
+ ScatterShot(target, hurt, index, i);
+ }
+ }
+
+ private void ScatterShot(BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, int index, 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) =>
+ {
+ 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);
+ }
+
+ // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
+ onHit?.Invoke(index, hitList);
+ // 鍑讳腑灏遍攢姣佸瓙寮�
+ caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+
+ if (isFinish)
+ return;
+
+ // 澶氫釜瀛愬脊鐨勬渶鍚庝竴鍙�
+ if (index >= skillConfig.ActiveFrames.Length - 1)
+ {
+ // 澶氳鑹茬殑鏈�鍚庝竴涓鑹�
+ if (order >= tagUseSkillAttack.HurtList.Length - 1)
+ {
+ isFinish = true;
+ }
+ }
+ });
+
+ bulletCurves.Add(bulletCurve);
+ }
+
protected void ShotToTarget(BattleObject target, int bulletIndex)
{
BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
- var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, bulletIndex, (index, hitList) =>
+ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
{
foreach (var hurt in hitList)
{
--
Gitblit v1.8.0