Procházet zdrojové kódy

修改变身后死亡不消失bug

SZAND\msx_2 před 1 rokem
rodič
revize
f09a467e5a
1 změnil soubory, kde provedl 37 přidání a 35 odebrání
  1. 37 35
      ActionTowerDefense/Assets/Scripts/MoveCharacter.cs

+ 37 - 35
ActionTowerDefense/Assets/Scripts/MoveCharacter.cs

@@ -250,48 +250,50 @@ public class MoveCharacter : Character
 
     public override void BeHit(int damage, Vector3 force, bool changeHurt, float repelValue)
     {
-        if (isInvisible)
+        if (!isTran)
         {
-            return;
-        }
-        if (invincibleTime > 0)
-        {
-            return;
-        }
+            if (isInvisible)
+            {
+                return;
+            }
+            if (invincibleTime > 0)
+            {
+                return;
+            }
 
-        hp -= damage;
-        if (isTran)
+            hp -= damage;
+            uiHp.Show(hp, totalHp);
+            if (hp <= 0)
+            {
+
+                ChangeState(CharacterState.Die);
+                rb.AddForce(force);
+                return;
+            }
+            if (canNotChangeHurt)
+            {
+                return;
+            }
+            if (changeHurt && state == CharacterState.Weak)
+            {
+                ChangeState(CharacterState.Hurt);
+                rb.AddForce(force);
+                beRepelValue = totalBeRepelValue;
+                return;
+            }
+            beRepelValue -= repelValue;
+            if (changeHurt && beRepelValue <= 0)
+            {
+                ChangeState(CharacterState.Weak);
+            }
+        }
+        else
         {
             if (pc == null)
             {
                 pc = GetComponentInParent<PlayerController>();
             }
-            pc.hp = hp;
-            pc.uiHp.Show(pc.hp, pc.totalHp);
-        }
-        uiHp.Show(hp, totalHp);
-        if (hp <= 0)
-        {
-            
-            ChangeState(CharacterState.Die);
-            rb.AddForce(force);
-            return;
-        }
-        if (canNotChangeHurt)
-        {
-            return;
-        }
-        if (changeHurt && state == CharacterState.Weak)
-        {
-            ChangeState(CharacterState.Hurt);
-            rb.AddForce(force);
-            beRepelValue = totalBeRepelValue;
-            return;
-        }
-        beRepelValue -= repelValue;
-        if (changeHurt && beRepelValue <= 0)
-        {
-            ChangeState(CharacterState.Weak);
+            pc.BeHit(damage, force, changeHurt, repelValue);
         }
     }
 }