From 2d3a60767d0cd69c8dec97e39937bcd0c667be1c Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 12 十一月 2025 18:54:57 +0800
Subject: [PATCH] 125 战斗 血条&护盾1护盾2表现
---
Main/System/Battle/BattleUtility.cs | 10 +
Main/System/Battle/Skill/SkillBase.cs | 163 ++++++++++------------
Main/Config/PartialConfigs/SkillConfig.Partial.cs | 23 +++
Main/System/Battle/UIComp/BattleHeroInfoBar.cs | 100 ++++++++++----
Main/System/Battle/Define/BattleDmgInfo.cs | 96 +++----------
5 files changed, 203 insertions(+), 189 deletions(-)
diff --git a/Main/Config/PartialConfigs/SkillConfig.Partial.cs b/Main/Config/PartialConfigs/SkillConfig.Partial.cs
index 42bcf79..32e1c39 100644
--- a/Main/Config/PartialConfigs/SkillConfig.Partial.cs
+++ b/Main/Config/PartialConfigs/SkillConfig.Partial.cs
@@ -9,6 +9,7 @@
using System;
using UnityEngine;
using LitJson;
+using System.Linq;
public partial class SkillConfig : ConfigBase<int, SkillConfig>
{
@@ -78,4 +79,26 @@
tempDic.TryGetValue(skillLv, out config);
return config;
}
+
+ public List<int> GetDamageDivide(int _hitIndex)
+ {
+ List<int> damageDivide = new List<int>();
+ if (_hitIndex == 0 && DamageDivide.Length <= 0)
+ {
+ damageDivide.Add(10000);
+ }
+ else
+ {
+ if (DamageDivide.Length <= _hitIndex)
+ {
+ Debug.LogError("鎶�鑳戒激瀹冲垎甯冮厤缃敊璇� skillId: " + SkillID + " hitIndex: " + _hitIndex);
+ damageDivide.Add(10000);
+ }
+ else
+ {
+ damageDivide = DamageDivide[_hitIndex].ToList();
+ }
+ }
+ return damageDivide;
+ }
}
diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index 6b8e4e6..091b9fe 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -296,6 +296,16 @@
}
return config.nums[_num - 48];
}
+
+ public static bool IsHealing(HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
+ {
+ return ((hurt.AttackTypes & (int)ServerDamageType.Recovery) != 0 ||
+ (hurt.AttackTypes & (int)ServerDamageType.DamageReverse) != 0) &&
+ (hurt.AttackTypes & (int)ServerDamageType.Damage) == 0 &&
+ (hurt.AttackTypes & (int)ServerDamageType.Realdamage) == 0 &&
+ (hurt.AttackTypes & (int)ServerDamageType.SuckHpReverse) == 0 &&
+ (hurt.AttackTypes & (int)ServerDamageType.SelfHarm) == 0;
+ }
/// <summary>
/// 灏嗘暣涓妧鑳界殑鎬讳激瀹虫寜鍛戒腑娆℃暟鍜屽垎娈甸厤缃垎閰�
diff --git a/Main/System/Battle/Define/BattleDmgInfo.cs b/Main/System/Battle/Define/BattleDmgInfo.cs
index 42ba730..d709ae5 100644
--- a/Main/System/Battle/Define/BattleDmgInfo.cs
+++ b/Main/System/Battle/Define/BattleDmgInfo.cs
@@ -265,12 +265,6 @@
public List<long> damageList;
public List<long> suckHpList;
public List<long> reflectHpList;
-
- public long fromShieldValue;
- public long toShieldValue;
- public long fromHp;
- public long toHp;
-
public BattleDrops battleDrops;
public HB427_tagSCUseSkill.tagSCUseSkillHurt hurt;
public int hitIndex;
@@ -278,75 +272,35 @@
public SkillConfig skillConfig;
public long maxHp;
- #region Shield Value Calculations
+ // 鎶ょ浘鍊肩殑鍙樺寲搴旇浠庢姢鐩�2寮�濮嬪彉鍖� 涔熷氨鏄 濡傛灉鎶ょ浘2鏈夊�� 鍒欎粠鎶ょ浘2寮�濮嬪彉鍖� 鍚﹀垯浠庢姢鐩�1寮�濮嬪彉鍖�
+ // 鍐嶈�冭檻鎶ょ浘1 濡傛灉鎶ょ浘1鏈夊�� 鍒欎粠鎶ょ浘1寮�濮嬪彉鍖� 鍚﹀垯娌℃湁鎶ょ浘鍙樺寲
+ // 浣嗘槸鍏跺疄鍙互浠庢�昏閲忎笅鎵� 涔熷氨鏄
+ // from鎶ょ浘鍊� + from琛�閲� = 琛ㄧ幇鐨勫紑濮�
+ // to鎶ょ浘鍊� + to琛�閲� = 琛ㄧ幇鐨勭粨鏉�
+ // 杩欐牱灏变笉闇�瑕佸尯鍒嗘姢鐩�1鍜屾姢鐩�2浜� 鍙鍦ㄨ〃鐜颁笂鍋氬ソ灏辫
- public long MaxSheildValue
+ public long fromShieldValue;
+ public long toShieldValue;
+
+ public long fromHp;
+
+ public long toHp;
+
+ // 鏈鎶ょ浘鎶垫秷鍓嶇殑浼ゅ
+ public long totalDamage
{
get
{
- return hurtObj == null ? 0 : hurtObj.teamHero.maxHp;
+ long total = 0;
+ if (damageList != null)
+ {
+ foreach (var dmg in damageList)
+ {
+ total += dmg;
+ }
+ }
+
+ return total;
}
}
-
- public long phase1FromShieldValue
- {
- get
- {
- if (fromShieldValue > 0)
- {
- return Mathf.Min((int)fromShieldValue, (int)MaxSheildValue);
- }
- else
- {
- return 0;
- }
- }
- }
-
- public long phase1ToShieldValue
- {
- get
- {
- if (toShieldValue > 0)
- {
- return Mathf.Min((int)toShieldValue, (int)MaxSheildValue);
- }
- else
- {
- return 0;
- }
- }
- }
-
- public long phase2FromShieldValue
- {
- get
- {
- if (fromShieldValue > MaxSheildValue)
- {
- return fromShieldValue - MaxSheildValue;
- }
- else
- {
- return 0;
- }
- }
- }
-
- public long phase2ToShieldValue
- {
- get
- {
- if (toShieldValue > MaxSheildValue)
- {
- return toShieldValue - MaxSheildValue;
- }
- else
- {
- return 0;
- }
- }
- }
-
- #endregion
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 0caf1c4..7fb0d75 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -489,25 +489,6 @@
// 澶勭悊鍗曚釜鐩爣琚懡涓�:搴旂敤浼ゅ鍜屾柦娉曡�呮晥鏋�
protected virtual void OnHitEachTarget(int _hitIndex, BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
{
- // ============ 绗竴姝�:璁$畻浼ゅ鍒嗗竷 ============
- List<int> damageDivide = new List<int>();
- if (_hitIndex == 0 && skillConfig.DamageDivide.Length <= 0)
- {
- damageDivide.Add(10000);
- }
- else
- {
- if (skillConfig.DamageDivide.Length <= _hitIndex)
- {
- Debug.LogError("鎶�鑳戒激瀹冲垎甯冮厤缃敊璇� skillId: " + skillConfig.SkillID + " hitIndex: " + _hitIndex);
- damageDivide.Add(10000);
- }
- else
- {
- damageDivide = skillConfig.DamageDivide[_hitIndex].ToList();
- }
- }
-
// 璁$畻鎬讳激瀹冲拰鍒嗘浼ゅ鍒楄〃
long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
List<long> damageList = BattleUtility.DivideDamageToList(skillConfig.DamageDivide, _hitIndex, totalDamage);
@@ -515,29 +496,21 @@
long totalSuckHp = suckHp;
List<long> suckHpList = BattleUtility.DivideDamageToList(skillConfig.DamageDivide, _hitIndex, totalSuckHp);
+ long totalReflectHp = hurt.BounceHP;
+ List<long> reflectHpList = BattleUtility.DivideDamageToList(skillConfig.DamageDivide, _hitIndex, totalReflectHp);
- // ============ 绗簩姝�:鍒锋柊瀹為檯琛�閲� ============
- long fromHp = target.teamHero.curHp;
-
-
-
- // ============澶勭悊鍙嶄激 ===============
- // 涔熻鎸夋瘡涓�鍑诲钩鍧囩畻 鏈�鍚庤琛ラ綈浼ゅ
-
- long reflectHp = hurt.BounceHP;
-
-
- List<long> reflectHpList = BattleUtility.DivideDamageToList(skillConfig.DamageDivide, _hitIndex, reflectHp);
- // long currentSuckHp = suckHp / tagUseSkillAttack.HurtCount;
-
- // 璁$畻褰撳墠杩欎竴鍑荤殑瀹為檯浼ゅ(鎵�鏈夊垎娈典激瀹充箣鍜�)
+ // 璁$畻褰撳墠杩欎竴鍑荤殑鍚勯」鏁板��
long currentHitDamage = 0;
foreach (long dmg in damageList)
{
currentHitDamage += dmg;
}
-
+ long currentHitSuckHp = 0;
+ foreach (long suck in suckHpList)
+ {
+ currentHitSuckHp += suck;
+ }
long currentHitReflectHp = 0;
foreach (long reflect in reflectHpList)
@@ -545,54 +518,74 @@
currentHitReflectHp += reflect;
}
- long shieldValue = target.buffMgr.GetShieldValue();
-
- long remainSheild = shieldValue - currentHitDamage;
-
- long toShieldValue = Math.Max(0, shieldValue - currentHitDamage);
-
- long shieldRecieveDamage = shieldValue - toShieldValue;
-
- // if (shieldValue > 0 && remainSheild >= 0)
- // {
- // currentHitDamage = 0;
- // target.buffMgr.ReduceShieldValue(currentHitDamage);
- // }
- // else if (shieldValue > 0 && remainSheild < 0)
- // {
- // currentHitDamage = Math.Abs(remainSheild);
- // target.buffMgr.ClearShield();
- // }
-
- long toHp = fromHp; //Math.Max(0, fromHp - currentHitDamage);
-
+ // ============ 绗簩姝�:鑾峰彇鐩爣褰撳墠鐘舵�� ============
+ long fromHp = target.teamHero.curHp;
+ long maxHp = target.teamHero.maxHp;
+ long fromShieldValue = target.buffMgr.GetShieldValue();
// 鍒ゆ柇鏄不鐤楄繕鏄激瀹�
- bool isHealing = ((hurt.AttackTypes & (int)ServerDamageType.Recovery) != 0 ||
- (hurt.AttackTypes & (int)ServerDamageType.DamageReverse) != 0) &&
- (hurt.AttackTypes & (int)ServerDamageType.Damage) == 0 &&
- (hurt.AttackTypes & (int)ServerDamageType.Realdamage) == 0 &&
- (hurt.AttackTypes & (int)ServerDamageType.SuckHpReverse) == 0 &&
- (hurt.AttackTypes & (int)ServerDamageType.SelfHarm) == 0;
+ bool isHealing = BattleUtility.IsHealing(hurt);
+
+ // ============ 绗笁姝�:璁$畻鐩爣琛�閲忓拰鎶ょ浘鍙樺寲 ============
+ long toHp;
+ long toShieldValue;
if (isHealing)
{
- // 娌荤枟閫昏緫锛氱洿鎺ュ姞琛�锛屼笉鑰冭檻鎶ょ浘
- toHp = Math.Min(target.teamHero.maxHp, fromHp + currentHitDamage);
+ // 娌荤枟閫昏緫锛氱洿鎺ュ姞琛�锛屾姢鐩句笉鍙�
+ toHp = Math.Min(maxHp, fromHp + currentHitDamage);
+ toShieldValue = fromShieldValue;
}
else
{
- // 浼ゅ閫昏緫锛氬厛鎵f姢鐩撅紝鍐嶆墸琛�
- if (remainSheild < 0)
+ // 浼ゅ閫昏緫锛氬厛鎵f姢鐩撅紝鎶ょ浘涓嶈冻鍐嶆墸琛�
+ if (fromShieldValue >= currentHitDamage)
{
- // 鐩捐鎵撶牬
- toHp = Math.Max(0, fromHp + remainSheild);
+ // 鎶ょ浘瓒冲鎵垮彈鎵�鏈変激瀹�
+ toShieldValue = fromShieldValue - currentHitDamage;
+ toHp = fromHp;
+ }
+ else
+ {
+ // 鎶ょ浘涓嶈冻锛屽厛鎵e畬鎶ょ浘锛屽墿浣欎激瀹虫墸琛�
+ long remainingDamage = currentHitDamage - fromShieldValue;
+ toShieldValue = 0;
+ toHp = Math.Max(0, fromHp - remainingDamage);
}
}
-
- // 鏇存柊鐩爣琛�閲�
+ // ============ 绗洓姝�:鏇存柊鐩爣瀹為檯琛�閲� ============
target.teamHero.curHp = toHp;
+
+ // ============ 绗簲姝�:璁$畻骞舵洿鏂版柦娉曡�呰閲忓彉鍖� ============
+ long casterFromHp = caster.teamHero.curHp;
+ long casterMaxHp = caster.teamHero.maxHp;
+ long casterToHp = casterFromHp;
+
+ // 澶勭悊鍚歌
+ if (currentHitSuckHp > 0)
+ {
+ casterToHp = Math.Min(casterMaxHp, casterToHp + currentHitSuckHp);
+ }
+
+ // 澶勭悊鍙嶄激(鏂芥硶鑰呭彈鍒颁激瀹�)
+ if (currentHitReflectHp > 0)
+ {
+ long casterShieldValue = caster.buffMgr.GetShieldValue();
+ if (casterShieldValue >= currentHitReflectHp)
+ {
+ // 鏂芥硶鑰呮姢鐩捐冻澶�,琛�閲忎笉鍙�
+ }
+ else
+ {
+ // 鏂芥硶鑰呮姢鐩句笉瓒�,鎵h
+ long remainingReflect = currentHitReflectHp - casterShieldValue;
+ casterToHp = Math.Max(0, casterToHp - remainingReflect);
+ }
+ }
+
+ // 鏇存柊鏂芥硶鑰呰閲�
+ caster.teamHero.curHp = casterToHp;
#if UNITY_EDITOR
BattleDebug.LogError(
@@ -600,37 +593,32 @@
$"鏀诲嚮鑰�: {caster.teamHero.name}\n" +
$"鐩爣: {target.teamHero.name}\n" +
$"鎶�鑳�: {skillConfig.SkillName} (绗瑊_hitIndex}鍑�)\n" +
- $"浼ゅ: {currentHitDamage} 瀹為檯鍙楀埌浼ゅ: {fromHp-toHp} (鎬讳激瀹�: {totalDamage})\n" +
- $"鎵夸激鍓嶆姢鐩惧��: {shieldValue}\n" +
- $"鎵夸激鍚庢姢鐩惧��: {toShieldValue}\n" +
- $"鎶ょ浘鎵垮彈浼ゅ: {shieldRecieveDamage}\n" +
+ $"浼ゅ: {currentHitDamage} (鎬讳激瀹�: {totalDamage})\n" +
+ $"鍚歌: {currentHitSuckHp}\n" +
$"鍙嶄激: {currentHitReflectHp}\n" +
- $"琛�閲忓彉鍖�: {fromHp} -> {toHp}\n" +
- $"鎶�鑳藉寘閲岀殑琛�閲忔槸: {GeneralDefine.GetFactValue(hurt.CurHP, hurt.CurHPEx)}\n"
+ $"鐩爣鎶ょ浘鍙樺寲: {fromShieldValue} -> {toShieldValue}\n" +
+ $"鐩爣琛�閲忓彉鍖�: {fromHp} -> {toHp}\n" +
+ $"鏂芥硶鑰呰閲忓彉鍖�: {casterFromHp} -> {casterToHp}\n"
);
#endif
-
- bool isLastHit = _hitIndex >= skillConfig.DamageDivide.Length - 1;
-
- // ============ 绗笁姝�:鑾峰彇涓存椂鏁版嵁(鎺夎惤銆佹浜$瓑) ============
+ // ============ 绗叚姝�:鑾峰彇涓存椂鏁版嵁(鎺夎惤銆佹浜$瓑) ============
int objID = (int)target.ObjID;
tempDropList.TryGetValue(objID, out BattleDrops battleDrops);
tempDeadPackList.TryGetValue(objID, out HB422_tagMCTurnFightObjDead deadPack);
-
- // 鍙傛暟鎵撳寘
+ // ============ 绗竷姝�:鍙傛暟鎵撳寘骞惰皟鐢ㄧ洰鏍嘓urt ============
BattleHurtParam hurtParam = new BattleHurtParam()
{
casterObj = caster,
hurtObj = target,
damageList = damageList,
- suckHpList = suckHpList, //suckHpList,
- reflectHpList = reflectHpList,
+ suckHpList = suckHpList, // 鐢ㄤ簬casterDamageList椋樺瓧
+ reflectHpList = reflectHpList, // 鐢ㄤ簬casterDamageList椋樺瓧
fromHp = fromHp,
toHp = toHp,
- maxHp = target.teamHero.maxHp,
- fromShieldValue = shieldValue,
+ maxHp = maxHp,
+ fromShieldValue = fromShieldValue,
toShieldValue = toShieldValue,
battleDrops = battleDrops,
hurt = hurt,
@@ -639,10 +627,7 @@
skillConfig = skillConfig
};
- // ============ 绗洓姝�:鎵ц琛ㄧ幇(椋樺瓧銆佸姩鐢荤瓑) ============
target.Hurt(hurtParam);
-
-
}
// 澶勭悊HP鍒锋柊鍖咃紙绠�鍖栭�昏緫锛�
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index d118d33..13400ff 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -87,11 +87,16 @@
UpdateXP(battleObject.teamHero.rage, battleObject.teamHero.rage, 100, false);
long shieldValue = battleObject.buffMgr.GetShieldValue();
+ long curHp = battleObject.teamHero.curHp;
long maxHp = battleObject.teamHero.maxHp;
- // 绗竴鏉℃姢鐩剧殑鍊兼渶澶у�兼槸褰撳墠鐨凪axHp 绗簩鏉℃姢鐩剧殑鏈�澶у�煎叾瀹炰篃鏄疢axHp 澶氫綑鐨勪笉鍋氭樉绀�
-
- sliderShield1.value = maxHp > 0 ? Mathf.Min((float)shieldValue, (float)maxHp) / (float)maxHp : 0;
- sliderShield2.value = maxHp > 0 ? Mathf.Max((float)(shieldValue - maxHp), 0f) / (float)maxHp : 0;
+
+ // 鎶ょ浘1鐨勫�� = min(褰撳墠琛�閲� + 鎶ょ浘鍊�, maxHp) / maxHp
+ float shield1Value = maxHp > 0 ? Mathf.Min((float)(curHp + shieldValue), (float)maxHp) / (float)maxHp : 0;
+ // 鎶ょ浘2鐨勫�� = max(褰撳墠琛�閲� + 鎶ょ浘鍊� - maxHp, 0) / maxHp
+ float shield2Value = maxHp > 0 ? Mathf.Max((float)(curHp + shieldValue - maxHp), 0f) / (float)maxHp : 0;
+
+ sliderShield1.value = shield1Value;
+ sliderShield2.value = shield2Value;
}
public void SetActive(bool active)
@@ -117,12 +122,18 @@
}
}
- // check shield buff
+ // check shield buff
long shieldValue = battleObject.buffMgr.GetShieldValue();
+ long curHp = battleObject.teamHero.curHp;
long maxHp = battleObject.teamHero.maxHp;
- // 绗竴鏉℃姢鐩剧殑鍊兼渶澶у�兼槸褰撳墠鐨凪axHp 绗簩鏉℃姢鐩剧殑鏈�澶у�煎叾瀹炰篃鏄疢axHp 澶氫綑鐨勪笉鍋氭樉绀�
- sliderShield1.value = maxHp > 0 ? Mathf.Min((float)shieldValue, (float)maxHp) / (float)maxHp : 0;
- sliderShield2.value = maxHp > 0 ? Mathf.Max((float)(shieldValue - maxHp), 0f) / (float)maxHp : 0;
+
+ // 鎶ょ浘1鐨勫�� = min(褰撳墠琛�閲� + 鎶ょ浘鍊�, maxHp) / maxHp
+ float shield1Value = maxHp > 0 ? Mathf.Min((float)(curHp + shieldValue), (float)maxHp) / (float)maxHp : 0;
+ // 鎶ょ浘2鐨勫�� = max(褰撳墠琛�閲� + 鎶ょ浘鍊� - maxHp, 0) / maxHp
+ float shield2Value = maxHp > 0 ? Mathf.Max((float)(curHp + shieldValue - maxHp), 0f) / (float)maxHp : 0;
+
+ sliderShield1.value = shield1Value;
+ sliderShield2.value = shield2Value;
}
/// <summary>
@@ -251,8 +262,6 @@
KillTween(ref damageSequence);
long maxHp = dmgInfo.battleHurtParam.maxHp;
- long fromShield = dmgInfo.battleHurtParam.fromShieldValue;
- long toShield = dmgInfo.battleHurtParam.toShieldValue;
if (maxHp <= 0)
{
@@ -261,33 +270,66 @@
return;
}
- // 绗竴鏉℃姢鐩剧殑鍊兼渶澶у�兼槸褰撳墠鐨凪axHp 绗簩鏉℃姢鐩剧殑鏈�澶у�煎叾瀹炰篃鏄疢axHp 澶氫綑鐨勪笉鍋氭樉绀�
- float fromValue1 = (float)dmgInfo.battleHurtParam.phase1FromShieldValue / (float)maxHp;
- float targetValue1 = (float)dmgInfo.battleHurtParam.phase1ToShieldValue / (float)maxHp;
-
- float fromValue2 = (float)dmgInfo.battleHurtParam.phase2FromShieldValue / (float)maxHp;
- float targetValue2 = (float)dmgInfo.battleHurtParam.phase2ToShieldValue / (float)maxHp;
+ long fromHp = dmgInfo.battleHurtParam.fromHp;
+ long toHp = dmgInfo.battleHurtParam.toHp;
+ long fromShield = dmgInfo.battleHurtParam.fromShieldValue;
+ long toShield = dmgInfo.battleHurtParam.toShieldValue;
damageSequence = DOTween.Sequence();
- sliderShield2.value = fromValue2;
- if (fromValue2 > 0 && fromValue2 != targetValue2)
+ // 璁剧疆鍒濆鍊�
+ if (fromShield > 0)
{
- damageSequence.Append(sliderShield2.DOValue(targetValue2, 0.2f));
+ // 鎶ょ浘1鐨勫�� = min(褰撳墠琛�閲� + 褰撳墠鎶ょ浘鍊�, maxHp) / maxHp
+ float fromShield1Value = Mathf.Min((float)(fromHp + fromShield), (float)maxHp) / (float)maxHp;
+ // 鎶ょ浘2鐨勫�� = max(褰撳墠琛�閲� + 褰撳墠鎶ょ浘鍊� - maxHp, 0) / maxHp
+ float fromShield2Value = Mathf.Max((float)(fromHp + fromShield - maxHp), 0f) / (float)maxHp;
+
+ sliderShield1.value = fromShield1Value;
+ sliderShield2.value = fromShield2Value;
+
+ // 濡傛灉鎶ょ浘2鏈夊�硷紝鍏堟挱鏀炬姢鐩�2鐨勫姩鐢�
+ if (fromShield2Value > 0)
+ {
+ // 璁$畻鎶ょ浘2鐨勫垵濮嬪�煎拰鐩爣鍊�
+ long beginShield2Value = fromHp + fromShield - maxHp;
+ long endShield2Value = Mathf.Max(0, (int)(toHp + toShield - maxHp));
+
+ float toShield2Value = (float)endShield2Value / (float)maxHp;
+
+ if (Mathf.Abs(fromShield2Value - toShield2Value) > 0.001f)
+ {
+ damageSequence.Append(sliderShield2.DOValue(toShield2Value, 0.2f));
+ }
+ }
+
+ // 鎾斁鎶ょ浘1鐨勫姩鐢�
+ if (fromShield1Value > 0)
+ {
+ // 璁$畻鎶ょ浘1鐨勭洰鏍囧��
+ float toShield1Value = Mathf.Min((float)(toHp + toShield), (float)maxHp) / (float)maxHp;
+
+ if (Mathf.Abs(fromShield1Value - toShield1Value) > 0.001f)
+ {
+ damageSequence.Append(sliderShield1.DOValue(toShield1Value, 0.2f));
+ }
+ }
+ }
+ else
+ {
+ // 娌℃湁鎶ょ浘锛岀洿鎺ヨ缃负0
+ sliderShield1.value = 0f;
+ sliderShield2.value = 0f;
}
- sliderShield1.value = fromValue1;
- if (fromValue1 > 0 && fromValue1 != targetValue1)
- {
- damageSequence.Append(sliderShield1.DOValue(targetValue1, 0.2f));
- }
+ // 琛�閲忓姩鐢�
+ float fromHpValue = (float)fromHp / (float)maxHp;
+ float toHpValue = (float)toHp / (float)maxHp;
+
+ sliderHp.value = fromHpValue;
- if (dmgInfo.battleHurtParam.fromHp != dmgInfo.battleHurtParam.toHp)
+ if (Mathf.Abs(fromHpValue - toHpValue) > 0.001f)
{
- float fromHpValue = (float)dmgInfo.battleHurtParam.fromHp / (float)maxHp;
- float toHpValue = (float)dmgInfo.battleHurtParam.toHp / (float)maxHp;
-
- sliderHp.value = fromHpValue;
damageSequence.Append(sliderHp.DOValue(toHpValue, 0.2f));
}
--
Gitblit v1.8.0