From a7548b443024413bf4a8417409b33205bac5bf80 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 23 十月 2025 15:53:25 +0800
Subject: [PATCH] 125 buff特效绑定节点偏移问题

---
 Main/System/Battle/Buff/BattleObjectBuffMgr.cs |    7 ++++---
 Main/Component/UI/Effect/BattleEffectPlayer.cs |   28 ++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index d740f15..3e3c0d2 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -30,6 +30,8 @@
         }
     }
 
+    private Bone followedBone;
+
     public bool isBindBone = false;
 
     public bool isRedCamp = true;
@@ -224,6 +226,31 @@
 
 
             blocker.SetSortingOrder(finalSortingOrder);
+        }
+    }
+
+    public void FollowBoneXY()
+    {
+        if (followedBone == null || !isBindBone)
+        {
+            return;
+        }
+
+        Vector2 vector2 = Vector2.zero;
+
+        if (effectConfig.effectPos != null && effectConfig.effectPos.Length >= 2)
+        {
+            vector2 = new Vector2((isRedCamp ? 1f : -1f) * effectConfig.effectPos[0], effectConfig.effectPos[1]);
+        }
+
+        if (spineComp != null)
+        {
+            spineComp.transform.localPosition = new Vector3(followedBone.WorldX + vector2.x, followedBone.WorldY + vector2.y, 0);
+        }
+
+        if (effectTarget != null)
+        {
+            effectTarget.transform.localPosition = new Vector3(followedBone.WorldX + vector2.x, followedBone.WorldY + vector2.y, 0);
         }
     }
 
@@ -638,6 +665,7 @@
         }
 
         isBindBone = true;
+        followedBone = bone;
 
         BoneFollower boneFollower = gameObject.AddMissingComponent<BoneFollower>();
         boneFollower.boneName = v;
diff --git a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
index 9a5c157..24073a2 100644
--- a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
+++ b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -37,10 +37,11 @@
             {
                 if (effectPlayer.isBindBone)
                 {
-                    continue;
+                    effectPlayer.FollowBoneXY();
+                    return;
                 }
+                int[] effectPos = effectPlayer.effectConfig.effectPos;
                 effectPlayer.transform.position = battleObject.heroRectTrans.position;
-                var effectPos = effectPlayer.effectConfig.effectPos;
                 if (null != effectPos && effectPos.Length >= 2)
                 {
                     effectPlayer.rectTrans.anchoredPosition += new Vector2(effectPos[0], effectPos[1]);
@@ -158,7 +159,7 @@
 
                         BoneFollower boneFollower = effect.AddMissingComponent<BoneFollower>();
 
-                        effect.BindBone(battleObject.motionBase.skeletonAnim, "hit");
+                        effect.BindBone(battleObject.motionBase.skeletonAnim, effect.effectConfig.nodeName);
 
                         HashSet<uint> buffIdSet = new HashSet<uint>();
                         buffIdSet.Add(vNetData.BuffID);

--
Gitblit v1.8.0