From 6a10188f3eddc740b9b8b1e7eefb0e2fdb3850e3 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 15 九月 2025 19:41:19 +0800
Subject: [PATCH] 125 【战斗】战斗系统 角色层级&战斗速度调整
---
Main/System/Battle/SkillEffect/NormalSkillEffect.cs | 6
Main/System/Battle/BattleField/BattleRootNode.cs | 6
Main/System/Battle/Motion/MotionBase.cs | 7
Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs.meta | 11 +
Main/System/Battle/Buff/BattleObjectBuffMgr.cs | 4
Main/System/Battle/SkillEffect/SkillEffect.cs | 6
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 6
Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs | 67 ++++++++
Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs | 2
Main/System/Battle/BattleField/BattleField.cs | 38 +++-
Main/Component/UI/Common/RendererAdjuster.cs | 33 ++-
Main/System/Battle/RecordPlayer/RecordPlayer.cs | 11 +
Main/System/Battle/BattleTweenMgr.cs | 14 +
Main/System/Battle/BattleObject/BattleObject.cs | 38 +---
Main/System/Battle/Skill/SkillBase.cs | 41 ++++-
Main/System/Battle/BattleObject/BattleObjMgr.cs | 9 +
Main/System/Battle/BattleEffectMgr.cs | 29 +++
Main/Component/UI/Effect/BattleEffectPlayer.cs | 99 ++++++------
18 files changed, 305 insertions(+), 122 deletions(-)
diff --git a/Main/Component/UI/Common/RendererAdjuster.cs b/Main/Component/UI/Common/RendererAdjuster.cs
index 1a1977c..fe9d096 100644
--- a/Main/Component/UI/Common/RendererAdjuster.cs
+++ b/Main/Component/UI/Common/RendererAdjuster.cs
@@ -5,7 +5,6 @@
public class RendererAdjuster : MonoBehaviour
{
- public int renderQueue = 3000;
public int sortingOrder = 0;
@@ -13,7 +12,14 @@
public List<Renderer> renderers = new List<Renderer>();
+ protected Canvas canvas;
+
public Action<string, int> onSortingChanged;
+
+ protected void Awake()
+ {
+ UpdateComps();
+ }
public void SetSortingOrder(int sortingOrder)
{
@@ -22,21 +28,12 @@
UpdateSortingOrder();
}
- public void Awake()
- {
- UpdateComps();
- }
-
- protected void OnEnable()
- {
- UpdateComps();
- UpdateSortingOrder();
- }
-
protected void UpdateComps()
{
renderers.Clear();
renderers.AddRange(gameObject.GetComponentsInChildren<Renderer>(true));
+
+ canvas = GetComponent<Canvas>();
}
public void UpdateSortingOrder()
@@ -44,6 +41,7 @@
// 灏嗙壒鏁堢殑鎺掑簭椤哄簭璁剧疆涓篊anvas鎺掑簭椤哄簭鍔犱笂鍋忕Щ閲�
ApplySortingSettings(sortingOrder, customSortingLayer);
}
+
private void ApplySortingSettings(int sortingOrder, string sortingLayer)
{
@@ -52,8 +50,6 @@
if (renderer != null)
{
renderer.sortingOrder = sortingOrder;
- renderer.material.renderQueue = renderQueue; // 璁剧疆娓叉煋闃熷垪
- // renderer.material.renderQueue = overlayRQ;
if (!string.IsNullOrEmpty(sortingLayer))
{
renderer.sortingLayerName = sortingLayer;
@@ -61,6 +57,15 @@
}
}
+ if (null != canvas)
+ {
+ canvas.sortingOrder = sortingOrder;
+ if (!string.IsNullOrEmpty(sortingLayer))
+ {
+ canvas.sortingLayerName = sortingLayer;
+ }
+ }
+
onSortingChanged?.Invoke(sortingLayer, sortingOrder);
}
}
diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index 3be7521..f9f4f4e 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -33,7 +33,7 @@
public bool isRedCamp = true;
public EffectConfig effectConfig;
- public float speedRate = 1f;
+ public float speedRate = 1.5f;
@@ -43,11 +43,9 @@
public Action<BattleEffectPlayer> onDestroy;
- [HideInInspector] public Canvas canvas = null;
-
[HideInInspector] public GameObject effectTarget = null;
- protected EffectPenetrationBlocker blocker = null;
+ protected RendererAdjuster blocker = null;
protected bool isInit = false;
@@ -61,6 +59,8 @@
protected SkeletonAnimation spineComp;
protected Spine.AnimationState spineAnimationState;
+
+ protected int heroSetedSortingOrder;
public GameObjectPoolManager.GameObjectPool pool;
@@ -157,24 +157,43 @@
onComplete?.Invoke();
}
- public virtual void Play(bool showLog = true)
+ public void SetSortingOrder(int _heroSetedSortingOrder)
{
+ heroSetedSortingOrder = _heroSetedSortingOrder;
+ int so = heroSetedSortingOrder;
- if (!isInit)
+ if (null != blocker && effectConfig != null)
+ {
+ if (BattleConst.UnactiveHeroSortingOrder == heroSetedSortingOrder)
{
- InitComponent(showLog);
- isInit = true;
+ so = effectConfig.frontBack == 1 ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder;
}
else
{
- //閬垮厤閲嶅鍒涘缓
- if (!this.gameObject.activeSelf)
- {
- this.gameObject.SetActive(true);
- }
- return;
+ so = effectConfig.frontBack == 1 ? BattleConst.ActiveHeroFrontSortingOrder : BattleConst.ActiveHeroBackSortingOrder;
}
+
+ blocker.SetSortingOrder(so);
+ }
+ }
+
+ public virtual void Play(bool showLog = true)
+ {
+ if (!isInit)
+ {
+ InitComponent(showLog);
+ isInit = true;
+ }
+ else
+ {
+ //閬垮厤閲嶅鍒涘缓
+ if (!this.gameObject.activeSelf)
+ {
+ this.gameObject.SetActive(true);
+ }
+ return;
+ }
if (EffectMgr.IsNotShowBySetting(effectId))
{
@@ -195,12 +214,12 @@
if (effectConfig.autoDestroy != 0)
{
- GameObject.Destroy(gameObject, effectConfig.destroyDelay);
+ GameObject.Destroy(gameObject, effectConfig.destroyDelay / speedRate);
}
PlayEffect();
-
+
}
@@ -250,22 +269,15 @@
spineAnimationState.Complete -= OnSpineAnimationComplete;
spineAnimationState.Complete += OnSpineAnimationComplete;
-
- if (null == canvas)
- canvas = GetComponentInParent<Canvas>();
-
// 娣诲姞鐗规晥绌块�忛樆鎸″櫒
- blocker = spineComp.AddMissingComponent<EffectPenetrationBlocker>();
+ blocker = spineComp.AddMissingComponent<RendererAdjuster>();
blocker.onSortingChanged = OnSortingChanged;
- // 濡傛灉娌℃湁canvas鐨勮瘽 姝e父鏄洜涓轰笉鍦˙attleWin涓嬮潰鐨勮妭鐐� 鎰忔�濆氨鏄綋鍓嶆病鏈夋樉绀� 绛夊埌鍒囧洖鎴樻枟鐨勬椂鍊欏啀閫氳繃BattleField.UpdateCanvas鏉ユ洿鏂�
- if (canvas != null)
- {
- blocker.SetParentCanvas(canvas);
- }
-
spineComp.enabled = true;
+
+ spineComp.timeScale = speedRate;
+ spineAnimationState.TimeScale = speedRate;
Spine.Animation animation = spineAnimationState.Data.SkeletonData.Animations.First();
spineAnimationState.SetAnimation(0, animation, effectConfig.isLoop != 0);
@@ -320,19 +332,11 @@
OnUnityAnimationComplete();
- if (null == canvas)
- canvas = GetComponentInParent<Canvas>();
// 娣诲姞鐗规晥绌块�忛樆鎸″櫒
- blocker = effectTarget.AddMissingComponent<EffectPenetrationBlocker>();
+ blocker = effectTarget.AddMissingComponent<RendererAdjuster>();
blocker.onSortingChanged = OnSortingChanged;
-
- // 濡傛灉娌℃湁canvas鐨勮瘽 姝e父鏄洜涓轰笉鍦˙attleWin涓嬮潰鐨勮妭鐐� 鎰忔�濆氨鏄綋鍓嶆病鏈夋樉绀� 绛夊埌鍒囧洖鎴樻枟鐨勬椂鍊欏啀閫氳繃BattleField.UpdateCanvas鏉ユ洿鏂�
- if (canvas != null)
- {
- blocker.SetParentCanvas(canvas);
- }
SoundPlayer.Instance.PlayUIAudio(effectConfig.audio);
@@ -526,21 +530,18 @@
return true;
}
- /// <summary>
- /// 璁剧疆閬僵锛堟敮鎸丷ectMask2D銆丮ask銆丼moothMask绛夛級
- /// </summary>
- public void SetMask(RectTransform maskArea = null)
+ public void SetSpeedRatio(float ratio)
{
- if (effectTarget == null || blocker == null)
- return;
-
- // 浼樺厛浣跨敤浼犲叆鐨刴askArea
- if (maskArea != null)
+ speedRate = ratio;
+ if (spineComp != null)
{
- blocker.PerformMask(maskArea);
- return;
+ spineComp.timeScale = speedRate;
+ }
+
+ // Animator鍔ㄧ敾
+ foreach (var animator in animatorList)
+ {
+ animator.speed = speedRate;
}
}
-
-
}
diff --git a/Main/System/Battle/BattleEffectMgr.cs b/Main/System/Battle/BattleEffectMgr.cs
index b9419a2..4d8f83f 100644
--- a/Main/System/Battle/BattleEffectMgr.cs
+++ b/Main/System/Battle/BattleEffectMgr.cs
@@ -43,7 +43,7 @@
}
}
- public BattleEffectPlayer PlayEffect(int ObjID, int effectId, Transform parent, BattleCamp camp)
+ public BattleEffectPlayer PlayEffect(BattleObject layerDepender, int effectId, Transform parent, BattleCamp camp)
{
if (effectId <= 0)
{
@@ -70,16 +70,30 @@
effectPlayer.transform.position = parent.position;
- effectPlayer.onDestroy += OnEffectDestroy;
+
+ BattleObject temp = layerDepender;
+ effectPlayer.onDestroy += (efPlayer) =>
+ {
+ OnEffectDestroy(efPlayer);
+ temp.layerMgr.RemoveEffect(efPlayer);
+ };
+
if (effectPlayer != null)
{
effectDict[effectId].Add(effectPlayer);
}
effectPlayer.Play(true);
+
+ effectPlayer.SetSpeedRatio(battleField.speedRatio);
var effectScale = effectPlayer.transform.localScale;
effectScale.x *= isRedCamp ? 1 : -1;
effectPlayer.transform.localScale = effectScale;
+
+ if (null != layerDepender)
+ {
+ layerDepender.layerMgr.AddEffect(effectPlayer);
+ }
return effectPlayer;
}
@@ -140,4 +154,15 @@
effectDict.Clear();
}
+
+ public void SetSpeedRatio(float ratio)
+ {
+ foreach (var kvPair in effectDict)
+ {
+ foreach (var effectPlayer in kvPair.Value)
+ {
+ effectPlayer.SetSpeedRatio(ratio);
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index b4dba55..4ec0e1b 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -24,6 +24,8 @@
public int FuncLineID = 0;
+ public float speedRatio = 1.1f;
+
public JsonData extendData;
public bool IsBattleFinish
@@ -86,7 +88,7 @@
battleTweenMgr = new BattleTweenMgr();
recordPlayer = new RecordPlayer();
-
+
}
public virtual void Init(int _MapID, int _FuncLineID, JsonData _extendData,
@@ -104,7 +106,7 @@
battleEffectMgr.Init(this);
battleTweenMgr.Init(this);
recordPlayer.Init(this);
-
+
if (blueTeamList == null)
{
battleObjMgr.Init(this, redTeamList[redTeamIndex], null);
@@ -115,7 +117,29 @@
battleObjMgr.Init(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]);
}
- battleRootNode.SetBackground(ResManager.Instance.LoadAsset<Texture>("Texture/FullScreenBg", "battlebg1"));
+ battleRootNode.SetBackground(ResManager.Instance.LoadAsset<Texture>("Texture/FullScreenBg", "mainui_img_277"));
+
+ SetBattleStartState();
+ SetSpeedRatio(speedRatio);
+ }
+
+ public void SetSpeedRatio(float ratio)
+ {
+ speedRatio = ratio;
+ battleObjMgr.SetSpeedRatio(ratio);
+ recordPlayer.SetSpeedRatio(ratio);
+ battleEffectMgr.SetSpeedRatio(ratio);
+ battleTweenMgr.SetSpeedRatio(ratio);
+ }
+
+ protected virtual void SetBattleStartState()
+ {
+ foreach (var obj in battleObjMgr.allBattleObjDict.Values)
+ {
+ obj.layerMgr.SetFront();
+ }
+
+ battleRootNode.skillMaskNode.SetActive(false);
}
// 鍦≧un涔嬪墠瑕佽缃畬姣� 瑕佸垱寤篈gent
@@ -363,14 +387,10 @@
public void UpdateCanvas(Canvas canvas)
{
- EffectPenetrationBlocker[] blockers = battleRootNode.GetComponentsInChildren<EffectPenetrationBlocker>(true);
- if (null != blockers)
+ foreach (var obj in battleObjMgr.allBattleObjDict.Values)
{
- foreach (var blocker in blockers)
- {
- blocker.SetParentCanvas(canvas);
- }
+ obj.layerMgr.UpdateLayer();
}
// RendererAdjuster[] adjusters = battleRootNode.GetComponentsInChildren<RendererAdjuster>(true);
diff --git a/Main/System/Battle/BattleField/BattleRootNode.cs b/Main/System/Battle/BattleField/BattleRootNode.cs
index 12f880b..128b941 100644
--- a/Main/System/Battle/BattleField/BattleRootNode.cs
+++ b/Main/System/Battle/BattleField/BattleRootNode.cs
@@ -49,4 +49,10 @@
// imgBackground.SetNativeSize();
}
}
+
+ public Transform skillBackNode;
+
+ public Transform skillFrontNode;
+
+ public GameObject skillMaskNode;
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs b/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs
index 7a0c033..449150f 100644
--- a/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs
@@ -6,7 +6,7 @@
private bool isRun = false;
public DodgeFinishAction(BattleField _battleField, BattleObject _dodgeObj)
- : base(RecordActionType.DodgeFinish, _battleField, null)
+ : base(RecordActionType.DodgeFinish, _battleField, _dodgeObj)
{
}
diff --git a/Main/System/Battle/BattleObject/BattleObjMgr.cs b/Main/System/Battle/BattleObject/BattleObjMgr.cs
index a6f0e39..446cc62 100644
--- a/Main/System/Battle/BattleObject/BattleObjMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -49,6 +49,7 @@
battleObj.heroGo.SetActive(active);
allBattleObjDict.Add(battleObj.ObjID, battleObj);
campDict.Add(teamHero.positionNum, battleObj);
+ battleObj.SetSpeedRatio(battleField.speedRatio);
}
}
}
@@ -240,6 +241,14 @@
}
}
+ public void SetSpeedRatio(float ratio)
+ {
+ foreach (var obj in allBattleObjDict.Values)
+ {
+ obj.SetSpeedRatio(ratio);
+ }
+ }
+
#if UNITY_EDITOR_STOP_USING
public void ReviveAll()
{
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index d086b64..ecef462 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -32,6 +32,8 @@
public BattleObjectBuffMgr buffMgr;
+ public BattleObjectLayerMgr layerMgr;
+
public int ObjID { get; set; }
public BattleCamp Camp { get; protected set; }
@@ -65,8 +67,6 @@
}
}
- public int sortingOrder = 0;
-
protected Action onDeathAnimationComplete;
protected Renderer[] renderers;
@@ -89,6 +89,9 @@
buffMgr = new BattleObjectBuffMgr();
buffMgr.Init(this);
+ layerMgr = new BattleObjectLayerMgr();
+ layerMgr.Init(this);
+
renderers = heroGo.GetComponentsInChildren<Renderer>(true);
heroInfoBar = heroGo.GetComponentInChildren<BattleHeroInfoBar>(true);
@@ -100,7 +103,7 @@
heroInfoBar.transform.localScale = heroInfoBarScale;
heroInfoBar.SetActive(true);
- SetToFront();
+ SetFront();
}
@@ -389,7 +392,7 @@
heroRectTrans.anchoredPosition = Vector2.zero;
heroInfoBar.SetActive(false);
- SetToFront();
+ SetFront();
}
public void PushDropItems(BattleDrops _battleDrops)
@@ -411,34 +414,19 @@
battleDrops = null;
}
- public void SetToBack()
+ public void SetBack()
{
- sortingOrder = BattleConst.UnactiveHeroSortingOrder;
- UpdateSortingOrder();
+ layerMgr.SetBack();
}
- public void SetToFront()
+ public void SetFront()
{
- sortingOrder = BattleConst.ActiveHeroSortingOrder;
- UpdateSortingOrder();
+ layerMgr.SetFront();
}
- private void UpdateSortingOrder()
+ public void SetSpeedRatio(float ratio)
{
- if (null == renderers) return;
-
- foreach (var renderer in renderers)
- {
- if (renderer != null)
- {
- renderer.sortingOrder = sortingOrder;
- }
- }
- }
-
- public int GetSortingOrder()
- {
- return sortingOrder;
+ motionBase.SetSpeedRatio(ratio);
}
diff --git a/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
new file mode 100644
index 0000000..08a5bcf
--- /dev/null
+++ b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
@@ -0,0 +1,67 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+public class BattleObjectLayerMgr
+{
+ public BattleObject battleObj;
+
+ public RendererAdjuster rendererAdjuster;
+
+ private List<BattleEffectPlayer> effectPlayers = new List<BattleEffectPlayer>();
+
+ private bool isFront = true;
+
+ public BattleObjectLayerMgr()
+ {
+
+ }
+
+ public void Init(BattleObject battleObj)
+ {
+ this.battleObj = battleObj;
+ rendererAdjuster = battleObj.heroGo.AddMissingComponent<RendererAdjuster>();
+ }
+
+ public void SetSortingOrder(int sortingOrder)
+ {
+ if (rendererAdjuster != null)
+ {
+ rendererAdjuster.SetSortingOrder(sortingOrder);
+ }
+ }
+
+ public void AddEffect(BattleEffectPlayer effectPlayer)
+ {
+ if (effectPlayer != null && !effectPlayers.Contains(effectPlayer))
+ {
+ effectPlayers.Add(effectPlayer);
+ effectPlayer.SetSortingOrder(rendererAdjuster.sortingOrder);
+ }
+ }
+
+ public void RemoveEffect(BattleEffectPlayer effectPlayer)
+ {
+ if (effectPlayers.Contains(effectPlayer))
+ {
+ effectPlayers.Remove(effectPlayer);
+ }
+ }
+
+ public void SetFront()
+ {
+ isFront = true;
+ UpdateLayer();
+ }
+
+ public void SetBack()
+ {
+ isFront = false;
+ UpdateLayer();
+ }
+
+ public void UpdateLayer()
+ {
+ int order = isFront ? BattleConst.ActiveHeroSortingOrder : BattleConst.UnactiveHeroSortingOrder;
+ SetSortingOrder(order);
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs.meta b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs.meta
new file mode 100644
index 0000000..0ecf08a
--- /dev/null
+++ b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9ccc1a52c3950a947a9159df13b88948
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Battle/BattleTweenMgr.cs b/Main/System/Battle/BattleTweenMgr.cs
index caebc16..2e72688 100644
--- a/Main/System/Battle/BattleTweenMgr.cs
+++ b/Main/System/Battle/BattleTweenMgr.cs
@@ -7,6 +7,8 @@
{
private BattleField battleField;
+ private float speedRatio => battleField.speedRatio;
+
private List<Tween> tweenList = new List<Tween>();
public void Init(BattleField _battleField)
@@ -45,6 +47,7 @@
}
tweenList.Add(tween);
+ tween.timeScale = speedRatio;
tween.onComplete += () =>
{
tweenList.Remove(tween);
@@ -85,4 +88,15 @@
}
tweenList.Clear();
}
+
+ public void SetSpeedRatio(float ratio)
+ {
+ foreach (var tween in tweenList)
+ {
+ if (tween != null && !tween.IsComplete())
+ {
+ tween.timeScale = speedRatio;
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
index 8355597..9704be3 100644
--- a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
+++ b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -101,14 +101,14 @@
}
else
{
- BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr.PlayEffect(battleObject.ObjID, skillConfig.EffectId, battleObject.heroRectTrans, battleObject.Camp);
+ BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr.PlayEffect(battleObject, skillConfig.EffectId, battleObject.heroRectTrans, battleObject.Camp);
effectDict.Add(skillConfig.EffectId, effect);
}
}
else
{
effectDict = new Dictionary<int, BattleEffectPlayer>();
- BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr.PlayEffect(battleObject.ObjID, skillConfig.EffectId, battleObject.heroRectTrans, battleObject.Camp);
+ BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr.PlayEffect(battleObject, skillConfig.EffectId, battleObject.heroRectTrans, battleObject.Camp);
effectDict.Add(skillConfig.EffectId, effect);
buffEffectDict.Add(vNetData.BuffID, effectDict);
}
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 40d4d06..7883bf6 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -393,6 +393,13 @@
PlayAnimation(MotionName.idle, true);
}
+ public void SetSpeedRatio(float ratio)
+ {
+ MotionTimeScale = ratio;
+ spineAnimationState.TimeScale = ratio;
+ skeletonGraphic.timeScale = ratio;
+ }
+
#endregion
}
\ No newline at end of file
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index b0dc553..aff4442 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -13,7 +13,9 @@
private bool isWaitingNextAction = false;
private float waitTimer = 0f;
- private const float waitInterval = 0f;
+ private const float waitInterval = 0.2f;
+
+ private float speedRatio = 1.5f;
public void Init(BattleField _battleField)
{
@@ -96,7 +98,7 @@
// 绛夊緟涓嬩竴涓猘ction
if (isWaitingNextAction)
{
- waitTimer += Time.deltaTime;
+ waitTimer += Time.deltaTime * speedRatio;
if (waitTimer >= waitInterval)
{
isWaitingNextAction = false;
@@ -183,4 +185,9 @@
recordActionQueue.Clear();
immediatelyActionList.Clear();
}
+
+ public void SetSpeedRatio(float ratio)
+ {
+ speedRatio = ratio;
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 7e83c22..049ac80 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, Action _onComplete = null)
+ protected void MoveToTarget(RectTransform target, Vector2 offset, Action _onComplete = null, float speed = 500f)
{
// 鍘熷湴閲婃斁
if (skillConfig.CastDistance >= 9999)
@@ -165,7 +165,7 @@
{
caster.motionBase.PlayAnimation(MotionName.idle, true);
_onComplete?.Invoke();
- });
+ }, speed);
battleField.battleTweenMgr.OnPlayTween(tweener);
}
@@ -199,7 +199,7 @@
{
// 鍥炲埌鍘熸潵鐨勪綅缃�
MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero,
- OnAttackFinish);
+ OnAttackFinish, 750F);
}
, -1f);
});
@@ -238,7 +238,7 @@
{
RectTransform rectTransform = battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum);
// 鍥炲埌鍘熸潵鐨勪綅缃�
- MoveToTarget(rectTransform, Vector2.zero, OnAttackFinish);
+ MoveToTarget(rectTransform, Vector2.zero, OnAttackFinish, 750F);
}
, -1f);
});
@@ -268,7 +268,7 @@
{
// 鍥炲埌鍘熸潵鐨勪綅缃�
MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum),
- Vector2.zero, OnAttackFinish);
+ Vector2.zero, OnAttackFinish, 750F);
}
, -1f);
});
@@ -372,6 +372,9 @@
protected void HighLightAllTargets()
{
+ if (skillConfig.FuncType != 2)
+ return;
+
// 楂樹寒鎵�鏈夌洰鏍�
List<BattleObject> highlightList = battleField.battleObjMgr.GetBattleObjList(tagUseSkillAttack);
highlightList.Add(caster);
@@ -383,15 +386,17 @@
BattleObject bo = allList[i];
if (highlightList.Contains(bo))
{
- bo.SetToFront();
+ bo.layerMgr.SetFront();
+ bo.heroRectTrans.SetParent(battleField.battleRootNode.skillFrontNode, true);
}
else
{
- bo.SetToBack();
+ bo.layerMgr.SetBack();
+ bo.heroRectTrans.SetParent(battleField.battleRootNode.skillBackNode, true);
}
}
- // battleField.skillMask.SetActive(true);
+ battleField.battleRootNode.skillMaskNode.SetActive(true);
// caster.battleField.skillMask
// 鎶婅繖浜汢O鍏ㄩ珮浜� 鎴栬�呰鎶婇櫎浜嗚繖浜涚殑閮芥斁鍦ㄩ伄缃╁悗闈�
@@ -622,7 +627,25 @@
}
}
- return isFinished && moveFinished;
+ if (isFinished && moveFinished)
+ {
+ List<BattleObject> allList = battleField.battleObjMgr.allBattleObjDict.Values.ToList<BattleObject>();
+ for (int i = 0; i < allList.Count; i++)
+ {
+ BattleObject bo = allList[i];
+ bo.layerMgr.SetFront();
+ bo.heroRectTrans.SetParent(battleField.GetTeamNode(bo.Camp, bo.teamHero.positionNum), true);
+ }
+ battleField.battleRootNode.skillMaskNode.SetActive(false);
+
+
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
}
public virtual void ForceFinished()
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index 47cd4c1..1160b31 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -167,7 +167,7 @@
private void ShotToIndex(BattleCamp camp, int targetIndex, int bulletIndex)
{
RectTransform targetTransform = caster.battleField.GetTeamNode(camp, targetIndex);
- BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
+ BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
RectTransform effectTrans = effectPlayer.transform as RectTransform;
@@ -295,7 +295,7 @@
protected void ShotToTarget(BattleObject target, int bulletIndex)
{
- BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
+ BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, bulletIndex, (index, hitList) =>
{
@@ -336,7 +336,7 @@
if (effectId <= 0)
return;
- var effect = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, effectId, parent, camp);
+ var effect = caster.battleField.battleEffectMgr.PlayEffect(caster, effectId, parent, camp);
if (effect != null)
{
effect.transform.localRotation = parent.localRotation;
diff --git a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
index 140ddf8..0f3feef 100644
--- a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
@@ -29,12 +29,12 @@
if (skillConfig.ExplosionEffectId > 0)
{
- caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.ExplosionEffectId, targetTransform, caster.Camp);
+ caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.ExplosionEffectId, targetTransform, caster.Camp);
}
if (skillConfig.ExplosionEffect2 > 0)
{
- caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.ExplosionEffect2, targetTransform, caster.Camp);
+ caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.ExplosionEffect2, targetTransform, caster.Camp);
}
for (int i = 0; i < tagUseSkillAttack.HurtList.Length; i++)
@@ -49,7 +49,7 @@
if (skillConfig.ExplosionEffect3 > 0)
{
- caster.battleField.battleEffectMgr.PlayEffect(target.ObjID, skillConfig.ExplosionEffect3, target.heroGo.transform, caster.Camp);
+ caster.battleField.battleEffectMgr.PlayEffect(target, skillConfig.ExplosionEffect3, target.heroGo.transform, caster.Camp);
}
}
diff --git a/Main/System/Battle/SkillEffect/SkillEffect.cs b/Main/System/Battle/SkillEffect/SkillEffect.cs
index 023db9c..6932b1c 100644
--- a/Main/System/Battle/SkillEffect/SkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -27,11 +27,11 @@
onHit = _onHit;
if (skillConfig.EffectId > 0)
{
- caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId, caster.heroRectTrans, caster.Camp);
+ caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId, caster.heroRectTrans, caster.Camp);
}
if (skillConfig.EffectId2 > 0)
{
- caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId2, caster.heroRectTrans, caster.Camp);
+ caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId2, caster.heroRectTrans, caster.Camp);
}
}
@@ -50,7 +50,7 @@
if (skillConfig.MStartEffectId <= 0)
return;
// 涓憞鍥哄畾鐗规晥
- caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.MStartEffectId, caster.heroGo.transform, caster.Camp);
+ caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.MStartEffectId, caster.heroGo.transform, caster.Camp);
}
/// <summary>
--
Gitblit v1.8.0