Browse Source

修复落地扣血死亡会报错问题

wgl 5 months ago
parent
commit
a31be81a5d

+ 10 - 2
ActionTowerDefense/Assets/Scripts/Characters/AttributeStatus.cs

@@ -45,6 +45,7 @@ public class AttributeStatus : MonoBehaviour
     [TabGroup("샌령샌쭝")] [LabelText("Y렘蕨羸제")] public float decelerationRatioY = 15f;
     private bool haveLandingDamage;
     private int landingDamage;
+    private Character landingDamageFrom;
 
     [TabGroup("弄�")]
     [DisplayOnly] public bool haveVulnerable;
@@ -171,10 +172,18 @@ public class AttributeStatus : MonoBehaviour
                     //샌령
                     case AttackEffect.BlowUp:
                         AddBlowUp(attackInfo.blowUp, attackFrom.bodyTrans);
+                        if (attackInfo.blowUp.haveLandingDamage)
+                        {
+                            landingDamageFrom = attackFrom;
+                        }
                         break;
                     //샌쭝
                     case AttackEffect.ShotDown:
                         AddShotDown(attackInfo.shotDown, attackFrom.bodyTrans);
+                        if (attackInfo.shotDown.haveLandingDamage)
+                        {
+                            landingDamageFrom = attackFrom;
+                        }
                         break;
                     //샌仝
                     case AttackEffect.Weak:
@@ -269,7 +278,7 @@ public class AttributeStatus : MonoBehaviour
                             hitState = 1;
                             if (haveLandingDamage)
                             {
-                                character.BeHit(landingDamage);
+                                character.BeHit(landingDamage, landingDamageFrom);
                             }
                         }
                         else
@@ -402,7 +411,6 @@ public class AttributeStatus : MonoBehaviour
         rb.AddForce(vec3 * blowUp.force * (1 - resistances.BlowUp), ForceMode.Impulse);
         haveLandingDamage = blowUp.haveLandingDamage;
         landingDamage = blowUp.landingDamage;
-
         hitState = 0;
         character.ani.Play("hitted", 0, 0);
         isFly = false;

+ 12 - 0
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -218,6 +218,18 @@ public class MoveCharacter : Character
         base.BeHit(damage);
     }
 
+    //多传了一个attackfrom
+    public void BeHit(int damage, Character attackFrom)
+    {
+        BeHit(damage);
+        if (hp <= 0)
+        {
+            killer = attackFrom;
+            hitFeedbackSystem.curCharacterState = CharacterState.Die;
+            return;
+        }
+    }
+
     //造成伤害附加其他效果
     public override void BeHit(AttackInfo attackInfo, Character attackFrom)
     {