From 2bb96c84dc1003a17526df2ef6aac3c0a285d5dd Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 12 九月 2025 09:12:01 +0800
Subject: [PATCH] 125 【战斗】战斗系统 移动速度 & 子弹速度支持(去除原本使用时间的设定)

---
 Main/System/Battle/TestMoveToTarget.cs                             |    2 +-
 Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs          |    1 -
 Main/System/Battle/BattleUtility.cs                                |    5 ++++-
 Main/System/Battle/Skill/SkillBase.cs                              |   16 ++++++++--------
 Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs    |    1 +
 Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs    |    1 +
 Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs  |    2 +-
 Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs |    1 +
 Main/Config/Configs/SkillConfig.cs                                 |   11 +++++++----
 Main/System/Battle/BattleField/RecordActions/TestAction.cs         |    2 +-
 10 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/Main/Config/Configs/SkillConfig.cs b/Main/Config/Configs/SkillConfig.cs
index e0d0f65..d186d92 100644
--- a/Main/Config/Configs/SkillConfig.cs
+++ b/Main/Config/Configs/SkillConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           YYL
-//    [  Date ]:           2025骞�9鏈�2鏃�
+//    [  Date ]:           2025骞�9鏈�12鏃�
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -46,7 +46,7 @@
 	public int[][] DamageDivide;
 	public int BulletEffectId;
 	public int BulletPath;
-	public float BulletFlyTime;
+	public float BulletFlySpeed;
 	public int Scattering;
 	public int ExplosionEffectId;
 	public int ExplosionEffect2;
@@ -54,6 +54,7 @@
 	public int EffectId;
 	public int EffectId2;
 	public int MStartEffectId;
+	public int BuffEffect;
 	public int TriggerEffect;
 
     public override int LoadKey(string _key)
@@ -138,7 +139,7 @@
 
 			int.TryParse(tables[29],out BulletPath); 
 
-			float.TryParse(tables[30],out BulletFlyTime); 
+			float.TryParse(tables[30],out BulletFlySpeed); 
 
 			int.TryParse(tables[31],out Scattering); 
 
@@ -154,7 +155,9 @@
 
 			int.TryParse(tables[37],out MStartEffectId); 
 
-			int.TryParse(tables[38],out TriggerEffect); 
+			int.TryParse(tables[38],out BuffEffect); 
+
+			int.TryParse(tables[39],out TriggerEffect); 
         }
         catch (Exception exception)
         {
diff --git a/Main/System/Battle/BattleField/RecordActions/TestAction.cs b/Main/System/Battle/BattleField/RecordActions/TestAction.cs
index 23532b8..24a6115 100644
--- a/Main/System/Battle/BattleField/RecordActions/TestAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/TestAction.cs
@@ -51,7 +51,7 @@
             BattleObject caster = battleField.battleObjMgr.GetBattleObjectByIndex(BattleCamp.Red, selfIndex);
             BattleDebug.LogError("Move to target , target is " + target.name);
             caster.motionBase.PlayAnimation(MotionName.run, true);
-            var tweener = BattleUtility.MoveToTarget(caster.heroRectTrans, target, offset, duration, () =>
+            var tweener = BattleUtility.MoveToTarget(caster.heroRectTrans, target, offset, () =>
             {
                 caster.motionBase.PlayAnimation(MotionName.idle, true);
                 onComplete?.Invoke();
diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index 23774fe..dd04a89 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -61,7 +61,7 @@
 
 
     public static TweenerCore<Vector2, Vector2, DG.Tweening.Plugins.Options.VectorOptions> MoveToTarget(
-        RectTransform transform, RectTransform target, Vector2 offset, float duration, Action onComplete = null)
+        RectTransform transform, RectTransform target, Vector2 offset, Action onComplete = null, float speed = 450f)
     {
 
         // 鑾峰彇鐩爣鑺傜偣鐨勪笘鐣屽潗鏍囷紙涓績鐐癸級
@@ -78,6 +78,9 @@
             out localPoint);
 
         // 鍒涘缓RawImage
+        float distance = Vector2.Distance(transform.anchoredPosition, localPoint);
+
+        float duration = distance / speed; // 鍋囪閫熷害涓�1000鍗曚綅/绉掞紝鍙互鏍规嵁闇�瑕佽皟鏁�
 
         var tween = transform.DOAnchorPos(localPoint, duration).SetEase(Ease.Linear);
         tween.onComplete += () =>
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index f5a834c..f51ffe4 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -151,7 +151,7 @@
 		// battleField.battleTweenMgr.OnPlayTween(tweener);
 	}
 
-	protected void MoveToTarget(RectTransform target, Vector2 offset, float duration, Action onComplete = null)
+	protected void MoveToTarget(RectTransform target, Vector2 offset, Action onComplete = null)
 	{
 		//	鍘熷湴閲婃斁
 		if (skillConfig.CastDistance >= 9999)
@@ -161,7 +161,7 @@
 		}
 
 		caster.motionBase.PlayAnimation(MotionName.run, true);
-		var tweener = BattleUtility.MoveToTarget(caster.heroRectTrans, target, offset, duration, () =>
+		var tweener = BattleUtility.MoveToTarget(caster.heroRectTrans, target, offset, () =>
 		{
 			caster.motionBase.PlayAnimation(MotionName.idle, true);
 			onComplete?.Invoke();
@@ -186,7 +186,7 @@
 
 		RectTransform target = battleField.GetTeamNode(caster.GetEnemyCamp(), skillConfig);
 
-		MoveToTarget(target, new Vector2(skillConfig.CastDistance, 0), moveTime, () =>
+		MoveToTarget(target, new Vector2(skillConfig.CastDistance, 0), () =>
 		{
 			//	鍒颁綅缃浆韬�(涓嶄竴瀹氶潪瑕佽浆韬� 浣嗘槸娴佺▼瑕佸啓)
 			TurnBack(() =>
@@ -198,7 +198,7 @@
 						() =>
 						{
 							//	鍥炲埌鍘熸潵鐨勪綅缃�
-							MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, 
+							MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, 
 								OnAttackFinish);
 						}
 					, -1f);
@@ -225,7 +225,7 @@
 
 		RectTransform targetTrans = battleField.GetTeamNode(battleCamp, mainTargetPosNum);
 
-		MoveToTarget(targetTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () =>
+		MoveToTarget(targetTrans, new Vector2(skillConfig.CastDistance, 0), () =>
 		{
 			//	鍒颁綅缃浆韬�(涓嶄竴瀹氶潪瑕佽浆韬� 浣嗘槸娴佺▼瑕佸啓)
 			TurnBack(() =>
@@ -237,7 +237,7 @@
 						() =>
 						{
 							//	鍥炲埌鍘熸潵鐨勪綅缃�
-							MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, 
+							MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, 
 								OnAttackFinish);
 						}
 					, -1f);
@@ -255,7 +255,7 @@
 	{
 		RectTransform target = battleField.GetTeamNode(caster.Camp, skillConfig);
 
-		MoveToTarget(target, new Vector2(skillConfig.CastDistance, 0), moveTime, () =>
+		MoveToTarget(target, new Vector2(skillConfig.CastDistance, 0), () =>
 		{
 			//	鍒颁綅缃浆韬�(涓嶄竴瀹氶潪瑕佽浆韬� 浣嗘槸娴佺▼瑕佸啓)
 			TurnBack(() =>
@@ -268,7 +268,7 @@
 						{
 							//	鍥炲埌鍘熸潵鐨勪綅缃�
 							MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum),
-								Vector2.zero, moveTime, OnAttackFinish);
+								Vector2.zero, OnAttackFinish);
 						}
 					, -1f);
 				});
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
index d1ab419..6f74a30 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
@@ -17,6 +17,7 @@
         base.Reset();
         start = WorldToLocalAnchoredPosition(bulletTrans.position);
         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 32f90d1..9c1568e 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
@@ -30,6 +30,7 @@
         {
             start = WorldToLocalAnchoredPosition(bulletTrans.position);
             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 7f1bcd3..8e92c98 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -46,7 +46,6 @@
     {
         finished = false;
         elapsed = 0f;
-        duration = skillConfig.BulletFlyTime;
     }
 
     // 涓栫晫鍧愭爣杞负bulletTrans鐖惰妭鐐逛笅鐨勬湰鍦板潗鏍�
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
index ade785a..9cf08cd 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
@@ -21,6 +21,7 @@
         hitTriggered = false;
         start = WorldToLocalAnchoredPosition(bulletTrans.position);
         end = WorldToLocalAnchoredPosition(target.position);
+        duration = Vector2.Distance(start, end) / skillConfig.BulletFlySpeed;
         Vector2 dir = (end - start).normalized;
         float extend = 500f; // 璐┛璺濈锛屽彲鏍规嵁闇�姹傝皟鏁�
         outPos = end + dir * extend;
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
index 92db15a..5079d3b 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
@@ -18,7 +18,7 @@
         base.Reset();
         start = WorldToLocalAnchoredPosition(bulletTrans.position);
         end = WorldToLocalAnchoredPosition(target.position);
-
+        duration = Vector2.Distance(start, end) / skillConfig.BulletFlySpeed;
         // BattleUtility.MarkStartAndEnd(bulletTrans, target);
     }
 
diff --git a/Main/System/Battle/TestMoveToTarget.cs b/Main/System/Battle/TestMoveToTarget.cs
index d5d8d44..15b2ba5 100644
--- a/Main/System/Battle/TestMoveToTarget.cs
+++ b/Main/System/Battle/TestMoveToTarget.cs
@@ -17,7 +17,7 @@
             return;
         }
 
-        BattleUtility.MoveToTarget(sourceRect, targetRect, offset, duration, () =>
+        BattleUtility.MoveToTarget(sourceRect, targetRect, offset, () =>
         {
             Debug.Log("绉诲姩瀹屾垚锛�");
         });

--
Gitblit v1.8.0