From d84c2d711542e99ae6734a175aa1e76b58b3bbe8 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 15 十月 2025 16:58:25 +0800
Subject: [PATCH] 125 战斗 子弹初始位置设置偏移

---
 Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs          |    7 +++++++
 Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs    |    2 +-
 Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs    |    2 +-
 Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs  |    2 +-
 Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs |    2 +-
 5 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
index d307197..db0849c 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
@@ -15,7 +15,7 @@
     public override void Reset()
     {
         base.Reset();
-        start = WorldToLocalAnchoredPosition(bulletTrans.position);
+        start = WorldToLocalAnchoredPosition(bulletTrans.position) + bulletOffset;
         end = WorldToLocalAnchoredPosition(target.position);
         duration = Vector2.Distance(start, end) / skillConfig.BulletFlySpeed;
         control = (start + end) / 2 + Vector2.up * 100f;
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
index 1f20599..9c1e0a3 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
@@ -28,7 +28,7 @@
         bounceElapsed = 0f;
         if (hurtList.Count > 0)
         {
-            start = WorldToLocalAnchoredPosition(bulletTrans.position);
+            start = WorldToLocalAnchoredPosition(bulletTrans.position) + bulletOffset;
             end = WorldToLocalAnchoredPosition(target.position);
             duration = Vector2.Distance(start, end) / skillConfig.BulletFlySpeed;
         }
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
index 974b025..be527cd 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -12,6 +12,8 @@
     protected RectTransform target;
     protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit;
 
+    protected Vector2 bulletOffset = Vector2.zero;
+
     protected bool finished = false;
     protected float duration = 0f;
     protected float elapsed = 0f;
@@ -44,6 +46,11 @@
                 out localPoint);
             bulletTrans.anchoredPosition = localPoint;
         }
+
+        if (bulletEffect.effectConfig.effectPos != null && bulletEffect.effectConfig.effectPos.Length >= 2)
+        {
+            bulletOffset = new Vector2(bulletEffect.effectConfig.effectPos[0], bulletEffect.effectConfig.effectPos[1]);
+        }
     }
 
     public virtual void Reset()
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
index 33db2ab..b70d473 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
@@ -19,7 +19,7 @@
     {
         base.Reset();
         hitTriggered = false;
-        start = WorldToLocalAnchoredPosition(bulletTrans.position);
+        start = WorldToLocalAnchoredPosition(bulletTrans.position) + bulletOffset;
         end = WorldToLocalAnchoredPosition(target.position);
         duration = Vector2.Distance(start, end) / skillConfig.BulletFlySpeed;
         Vector2 dir = (end - start).normalized;
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
index 1ab621f..09c334f 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
@@ -16,7 +16,7 @@
     public override void Reset()
     {
         base.Reset();
-        start = WorldToLocalAnchoredPosition(bulletTrans.position);
+        start = WorldToLocalAnchoredPosition(bulletTrans.position) + bulletOffset;
         end = WorldToLocalAnchoredPosition(target.position);
         duration = Vector2.Distance(start, end) / skillConfig.BulletFlySpeed;
         // BattleUtility.MarkStartAndEnd(bulletTrans, target);

--
Gitblit v1.8.0