From a145fccec270b699d9231891650b19d6857d385a Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 09 九月 2025 16:19:41 +0800
Subject: [PATCH] 125 【战斗】战斗系统 修复表现上的一些问题

---
 Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs |   10 ++++------
 Main/System/Battle/BattleEffectMgr.cs                             |    5 +++--
 Main/System/Battle/SkillEffect/SkillEffect.cs                     |    7 +++++--
 Main/System/Battle/SkillEffect/BulletSkillEffect.cs               |    2 +-
 Main/Component/UI/Effect/BattleEffectPlayer.cs                    |   11 +++++++----
 5 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index 528eeb4..3be7521 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -30,8 +30,7 @@
         }
     }
 
-
-
+    public bool isRedCamp = true;
     public EffectConfig effectConfig;
 
     public float speedRate = 1f;
@@ -118,7 +117,7 @@
 
         if (effectConfig.effectPos != null && effectConfig.effectPos.Length >= 2)
         {
-            rectTrans.anchoredPosition += new Vector2(effectConfig.effectPos[0], effectConfig.effectPos[1]);
+            rectTrans.anchoredPosition += new Vector2((isRedCamp ? 1f : -1f) * effectConfig.effectPos[0], effectConfig.effectPos[1]);
         }
 
         if (effectConfig.effectScale > 0f)
@@ -416,7 +415,7 @@
 
 
     //  鍒涘缓鍚庣殑鐗规晥浼氳嚜鍔ㄩ殣钘� 闇�瑕佹墜鍔ㄨ皟鐢≒lay鎵嶈兘鎾斁
-    public static BattleEffectPlayer Create(int effectId, Transform parent)
+    public static BattleEffectPlayer Create(int effectId, Transform parent, bool isRedCamp)
     {
         // 鐩存帴鍒涘缓鐗规晥鎾斁鍣紝涓嶄娇鐢ㄥ璞℃睜
         BattleEffectPlayer battleEffectPlayer = null;
@@ -427,6 +426,10 @@
         battleEffectPlayer.rectTrans = newGo.AddMissingComponent<RectTransform>();
         
         battleEffectPlayer.effectId = effectId;
+
+        // 璁剧疆闃佃惀
+        battleEffectPlayer.isRedCamp = isRedCamp;
+
         battleEffectPlayer.SetActive(true);
         return battleEffectPlayer;
     }
diff --git a/Main/System/Battle/BattleEffectMgr.cs b/Main/System/Battle/BattleEffectMgr.cs
index f1c076d..b9419a2 100644
--- a/Main/System/Battle/BattleEffectMgr.cs
+++ b/Main/System/Battle/BattleEffectMgr.cs
@@ -63,8 +63,9 @@
             effectDict[effectId] = new List<BattleEffectPlayer>();
         }
 
+        bool isRedCamp = camp == BattleCamp.Red;
 
-        BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, battleField.battleRootNode.transform);
+        BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, battleField.battleRootNode.transform, isRedCamp);
         // 璁剧疆鐗规晥缂╂斁鍜屾柟鍚�
 
         effectPlayer.transform.position = parent.position;
@@ -77,7 +78,7 @@
         effectPlayer.Play(true);
         
         var effectScale = effectPlayer.transform.localScale;
-        effectScale.x *= camp == BattleCamp.Red ? 1 : -1;
+        effectScale.x *= isRedCamp ? 1 : -1;
         effectPlayer.transform.localScale = effectScale;
 
         return effectPlayer;
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
index c9a41e2..92db15a 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
@@ -37,18 +37,16 @@
         if (null != bulletTrans)
         {
             bulletTrans.anchoredPosition = pos;
+            
         }
 
         Vector2 dir = end - start;
-        float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
+        float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + (caster.Camp == BattleCamp.Red ? 0 : 180);
         if (null != bulletTrans)
         {
-            bulletTrans.localRotation = Quaternion.Euler(0, bulletTrans.transform.localScale.x < 0f ? 180 : 0, angle);
+            bulletTrans.rotation = Quaternion.Euler(0, 0, angle);
         }
-        // if (bulletTrans.transform.localScale.x < 0f)
-        // {
-        //     bulletTrans.transform.localRotation *= Quaternion.Euler(0, 180, 0);
-        // }
+
         if (t >= 1f)
         {
             finished = true;
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index cfa0549..4e0b138 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -242,6 +242,6 @@
             isCurveFinish |= bulletCurve.IsFinished;
         }
 
-        return isCurveFinish && isFinish;
+        return isCurveFinish && base.IsFinished();
     }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/SkillEffect/SkillEffect.cs b/Main/System/Battle/SkillEffect/SkillEffect.cs
index 5acf824..023db9c 100644
--- a/Main/System/Battle/SkillEffect/SkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -10,6 +10,8 @@
 
     protected bool isFinish = false;
 
+    protected bool isFinishFrameEnd = false;
+
     protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit;
 
     public SkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
@@ -64,16 +66,17 @@
     /// </summary>
     public virtual void OnFinalFrameEnd()
     {
-
+        isFinishFrameEnd = true;
     }
     
     public virtual bool IsFinished()
     {
-        return isFinish;
+        return isFinish && isFinishFrameEnd;
     }
 
     public virtual void ForceFinished()
     {
         isFinish = true;
+        isFinishFrameEnd = true;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0