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/BulletCurve/BounceBulletCurve.cs | 6 +-
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 60 ++++++++++++++++++++++++------
2 files changed, 51 insertions(+), 15 deletions(-)
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
index 9c1e0a3..a20732e 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
@@ -62,13 +62,13 @@
// 涓嬩竴娈靛脊灏�
start = end;
var nextTargetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurtList[curIndex].ObjID);
- if (nextTargetObj != null)
+ if (nextTargetObj != null && !nextTargetObj.IsDead())
{
- end = WorldToLocalAnchoredPosition(nextTargetObj.heroGo.transform.position);
+ end = WorldToLocalAnchoredPosition(nextTargetObj.heroRectTrans.position);
}
else
{
- Debug.LogError("寮瑰皠鎵句笉鍒颁笅涓�涓洰鏍�");
+ BattleDebug.LogError("寮瑰皠鎵句笉鍒颁笅涓�涓洰鏍� 鎴栬�呭彧鏈変竴涓洰鏍�");
// 濡傛灉鐩爣涓㈠け锛岀洿鎺ョ敤涓婁竴涓猠nd
end = start;
}
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