Просмотр исходного кода

将标签技能的开启及其参数统一到GameManager中进行管理和调整

HY-LSZNWIN10\Administrator 1 месяц назад
Родитель
Сommit
6f876da0ea

+ 9 - 6
ActionTowerDefense/Assets/Scripts/Characters/AttackController.cs

@@ -278,17 +278,20 @@ public class AttackController : MonoBehaviour
         public void AddAdditionalEffects()
         {
             additionalEffects = AttackAdditionalEffects.None;
-            if (GameManager.instance.myTreasuresTag[1] >= 10)
+            if (GameManager.instance.isFireEnable)
             {
-                additionalEffects |= AttackAdditionalEffects.Wind;
+                int randomInt = UnityEngine.Random.Range(0, 100);
+                if (randomInt < GameManager.instance.fireProbability) additionalEffects |= AttackAdditionalEffects.Fire;
             }
-            if (GameManager.instance.myTreasuresTag[2] >= 10)
+            if (GameManager.instance.isWindEnable)
             {
-                additionalEffects |= AttackAdditionalEffects.Ice;
+                int randomInt = UnityEngine.Random.Range(0, 100);
+                if (randomInt < GameManager.instance.windProbability) additionalEffects |= AttackAdditionalEffects.Wind;
             }
-            if (GameManager.instance.myTreasuresTag[6] >= 10)
+            if (GameManager.instance.isIceEnable)
             {
-                additionalEffects |= AttackAdditionalEffects.Fire;
+                int randomInt = UnityEngine.Random.Range(0, 100);
+                if (randomInt < GameManager.instance.iceProbability) additionalEffects |= AttackAdditionalEffects.Ice;
             }
         }
         public void ClearAdditionalEffects()

+ 3 - 3
ActionTowerDefense/Assets/Scripts/Characters/Demonic.cs

@@ -748,10 +748,10 @@ public class Demonic : MoveCharacter
             case CharacterState.Die:
                 if (!isPetrify)
                 {
-                    if(GameManager.instance.myTreasuresTag[3] >= 0)
+                    if(GameManager.instance.isRockEnable)
                     {
                         int randomInt = Random.Range(0, 100);
-                        if(randomInt < 100)
+                        if(randomInt < GameManager.instance.rockProbability)
                         {
                             isPetrify = true;
                             if (canFly)
@@ -798,7 +798,7 @@ public class Demonic : MoveCharacter
             case CharacterState.Petrify:
                 ani.speed = 0;
                 beHitTrigger.ChangeRenderState(RenderState.Petrify);
-                hp = totalHp;
+                hp = (int)(totalHp * GameManager.instance.stoneHpRadio);
                 break;
             default:
                 break;

+ 3 - 2
ActionTowerDefense/Assets/Scripts/Characters/Enemy.cs

@@ -660,9 +660,10 @@ public class Enemy : MoveCharacter
             Soul soul = soulObj.GetComponent<Soul>();
             soul.Burst(dir * soulStartSpeed);
             soul.type = type;
-            if(GameManager.instance.myTreasuresTag[7] >= 0)
+            if(GameManager.instance.isWoodEnable)
             {
-                PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/SoulFlower"), transform.position);
+                randomInt = Random.Range(0, 100);
+                if(randomInt < GameManager.instance.woodProbability) PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/SoulFlower"), transform.position);
             }
         }
     }

+ 7 - 11
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -403,21 +403,16 @@ public class MoveCharacter : Character
         int randomInt = 0;
         if((attackMethod.additionalEffects & AttackAdditionalEffects.Fire) == AttackAdditionalEffects.Fire)
         {
-            randomInt = Random.Range(0, 100);
-            if (randomInt < 100) BeHit(totalHp / 10);
+            BeHit((int)(totalHp * GameManager.instance.fireDamageRadio));
         }
         if ((attackMethod.additionalEffects & AttackAdditionalEffects.Ice) == AttackAdditionalEffects.Ice)
         {
-            randomInt = Random.Range(0, 100);
-            if (randomInt < 100) BeFrozen(2f);
+            BeFrozen(GameManager.instance.frozenTime);
         }
         if ((attackMethod.additionalEffects & AttackAdditionalEffects.Wind) == AttackAdditionalEffects.Wind)
         {
-            randomInt = Random.Range(0, 100);
-            if (randomInt < 100)
-            {
-                rb.mass -= rb.mass / 10;
-            }
+            rb.mass -= rb.mass * GameManager.instance.weightReductionratio;
+            BeHit(GameManager.instance.windDamage);
         }
     }
 
@@ -523,8 +518,9 @@ public class MoveCharacter : Character
         electrifyTime = _electrifyTime;
         electrifyTimer = Time.time;
         isElectrify = true;
-        ani.speed = electrifyAttackSpeedScale;
-        moveSpeedScale = electrifyMoveSpeedScale;
+        ani.speed = GameManager.instance.attackSpeedScale;
+        moveSpeedScale = GameManager.instance.moveSpeedScale;
+        BeHit(GameManager.instance.thunderDamage);
         disappearElectrifyEffect = PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/FX/ElectrifyEffect"), transform.position + Vector3.up, new Quaternion(0, 0, 0, 0),transform);      
     }
     #endregion

+ 6 - 4
ActionTowerDefense/Assets/Scripts/Characters/PlayerController.cs

@@ -1353,9 +1353,10 @@ public class PlayerController : MoveCharacter
                 cacheRush = false;
                 break;
             case CharacterState.Rush:
-                if (GameManager.instance.myTreasuresTag[6] >= 0)
+                if (GameManager.instance.isThunderEnable)
                 {
-                    bodyTrigger.gameObject.SetActive(true);
+                    int randomInt = Random.Range(0, 100);
+                    if (randomInt < GameManager.instance.thunderProbability) bodyTrigger.gameObject.SetActive(true);
                 }
                 aniCollider.Play("Rush", 0, 0);
                 ani.Play("rush_loop", 0, 0);
@@ -1381,9 +1382,10 @@ public class PlayerController : MoveCharacter
                 uiMp.Show(mp, totalMp);
                 break;
             case CharacterState.Sprint:
-                if (GameManager.instance.myTreasuresTag[6] >= 0)
+                if (GameManager.instance.isThunderEnable)
                 {
-                    bodyTrigger.gameObject.SetActive(true);
+                    int randomInt = Random.Range(0, 100);
+                    if (randomInt < GameManager.instance.thunderProbability) bodyTrigger.gameObject.SetActive(true);
                 }
                 aniCollider.Play("Sprint", 0, 0);
                 rb.useGravity = false;

+ 27 - 0
ActionTowerDefense/Assets/Scripts/GameManager.cs

@@ -70,6 +70,33 @@ public class GameManager : MonoBehaviour
     [FoldoutGroup("金币结算")][LabelText("金币掉落特效")] public GameObject dropGoldFX;
     [FoldoutGroup("金币结算")][LabelText("金币掉落字体")] public GameObject dropGoldText;
 
+    [FoldoutGroup("标签")]
+    [FoldoutGroup("标签/火")] [LabelText("是否启用")] public bool isFireEnable = false;
+    [FoldoutGroup("标签/火")] [LabelText("触发概率")] [PropertyRange(0, 100)] public int fireProbability = 100;
+    [FoldoutGroup("标签/火")] [LabelText("伤害占总生命百分比")] [PropertyRange(0, 1)] public float fireDamageRadio = 0.01f;
+
+    [FoldoutGroup("标签/冰")] [LabelText("是否启用")] public bool isIceEnable = false;
+    [FoldoutGroup("标签/冰")] [LabelText("触发概率")] [PropertyRange(0, 100)] public int iceProbability = 100;
+    [FoldoutGroup("标签/冰")] [LabelText("冰冻时间")] public float frozenTime = 3;
+
+    [FoldoutGroup("标签/雷")] [LabelText("是否启用")] public bool isThunderEnable = false;
+    [FoldoutGroup("标签/雷")] [LabelText("触发概率")] [PropertyRange(0, 100)] public int thunderProbability = 100;
+    [FoldoutGroup("标签/雷")] [LabelText("感电移速比值")] [PropertyRange(0, 1)] public float moveSpeedScale = 0.6f;
+    [FoldoutGroup("标签/雷")] [LabelText("感电攻速比值")] [PropertyRange(0, 1)] public float attackSpeedScale = 0.6f;
+    [FoldoutGroup("标签/雷")] [LabelText("伤害")] public int thunderDamage =3;
+
+    [FoldoutGroup("标签/风")] [LabelText("是否启用")] public bool isWindEnable = false;
+    [FoldoutGroup("标签/风")] [LabelText("触发概率")] [PropertyRange(0, 100)] public int windProbability = 100;
+    [FoldoutGroup("标签/风")] [LabelText("削减体重比值")] [PropertyRange(0, 1)] public float weightReductionratio = 0.1f;
+    [FoldoutGroup("标签/风")] [LabelText("伤害")] public int windDamage = 3;
+
+    [FoldoutGroup("标签/木")] [LabelText("是否启用")] public bool isWoodEnable = false;
+    [FoldoutGroup("标签/木")] [LabelText("触发概率")] [PropertyRange(0, 100)] public int woodProbability = 100;
+
+    [FoldoutGroup("标签/岩")] [LabelText("是否启用")] public bool isRockEnable = false;
+    [FoldoutGroup("标签/岩")] [LabelText("触发概率")] [PropertyRange(0, 100)] public int rockProbability = 100;
+    [FoldoutGroup("标签/岩")] [LabelText("石像生命值占总生命比值")] public float stoneHpRadio = 1;
+
     [Header("商店刷新")]
     [ValidateInput("CheckTagWeight","标签池子概率总和不是100%")]
     [FoldoutGroup("Rogue")] [LabelText("标签池子比重(%)")] [Tooltip("最高标签池;标签池;公共池")] public List<float> tagWeight;