SZAND\msx_2 7 сар өмнө
parent
commit
3394943988

+ 15 - 2
ActionTowerDefense/Assets/Scripts/AttackTrigger.cs

@@ -97,10 +97,23 @@ public class AttackTrigger : MonoBehaviour
                             moveCharacter.newTotalWeakTime = 0;
                             moveCharacter.newTotalWeakTime = 0;
                         }                        
                         }                        
                     }
                     }
-                    trigedObjs[i].BeHit(damage, force, changeHurt, repelValue);
+                    //¼ÆË㻤¼×¼õÃâ
+                    int curDamage = damage;
+                    int am = trigedObjs[i].owner.armor;
+                    if (am > 0)
+                    {
+                        int ap = owner.armorPiercing;
+                        int c = am - ap;
+                        if (c < 0)
+                        {
+                            c = 0;
+                        }
+                        curDamage *= 100 / (100 + c);
+                    }
+                    trigedObjs[i].BeHit(curDamage, force, changeHurt, repelValue);
                     if (trigedObjs[i].owner.debugAttackFrom)
                     if (trigedObjs[i].owner.debugAttackFrom)
                     {
                     {
-                        trigedObjs[i].owner.DebugAttackFrom(owner.name,damage);
+                        trigedObjs[i].owner.DebugAttackFrom(owner.name, curDamage);
                     }
                     }
                     if (owner.GetComponent<Demonic>())
                     if (owner.GetComponent<Demonic>())
                     {
                     {

+ 17 - 4
ActionTowerDefense/Assets/Scripts/Bullet.cs

@@ -188,22 +188,35 @@ public class Bullet : MonoBehaviour
                 trigedObjs.Add(hitTrigger);
                 trigedObjs.Add(hitTrigger);
                 if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 {
                 {
+                    //计算护甲减免
+                    int curDamage = damage;
+                    int am = hitTrigger.owner.armor;
+                    if (am > 0)
+                    {
+                        int ap = owner.armorPiercing;
+                        int c = am - ap;
+                        if (c < 0)
+                        {
+                            c = 0;
+                        }
+                        curDamage *= 100 / (100 + c);
+                    }
                     switch (bulletType)
                     switch (bulletType)
                     {
                     {
                         case BulletType.Single:
                         case BulletType.Single:
-                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, repelValue);
+                            hitTrigger.BeHit(curDamage, force * (-transform.right), changeHurt, repelValue);
                             if (hitTrigger.owner.debugAttackFrom)
                             if (hitTrigger.owner.debugAttackFrom)
                             {
                             {
-                                hitTrigger.owner.DebugAttackFrom(owner.name, damage);
+                                hitTrigger.owner.DebugAttackFrom(owner.name, curDamage);
                             }
                             }
                             isGetTarget = true;
                             isGetTarget = true;
                             gameObject.SetActive(false);
                             gameObject.SetActive(false);
                             break;
                             break;
                         case BulletType.Penetrate:
                         case BulletType.Penetrate:
-                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, repelValue);
+                            hitTrigger.BeHit(curDamage, force * (-transform.right), changeHurt, repelValue);
                             if (hitTrigger.owner.debugAttackFrom)
                             if (hitTrigger.owner.debugAttackFrom)
                             {
                             {
-                                hitTrigger.owner.DebugAttackFrom(owner.name, damage);
+                                hitTrigger.owner.DebugAttackFrom(owner.name, curDamage);
                             }
                             }
                             break;
                             break;
                         case BulletType.Bomb:
                         case BulletType.Bomb:

+ 2 - 1
ActionTowerDefense/Assets/Scripts/Character.cs

@@ -116,9 +116,10 @@ public class Character : MonoBehaviour
     public List<AttackInfo> attack2Infos;       //普攻2信息
     public List<AttackInfo> attack2Infos;       //普攻2信息
     public List<AttackTrigger> attackTriggers;  //普攻触发器,敌方进入后播放动画进行攻击
     public List<AttackTrigger> attackTriggers;  //普攻触发器,敌方进入后播放动画进行攻击
     public GameObject addAttackEffect;
     public GameObject addAttackEffect;
+    public int armorPiercing;                   //穿甲率
     public int[] curDamage1;
     public int[] curDamage1;
     public int[] curDamage2;
     public int[] curDamage2;
-
+     
     [Header("目标")]
     [Header("目标")]
     public List<TargetType> targetTypes;
     public List<TargetType> targetTypes;
     public Character targetCharacter;
     public Character targetCharacter;