Browse Source

变身后满血,变身时死亡后解除变身,恢复原血量

SZAND\msx_2 1 năm trước cách đây
mục cha
commit
a956ef95d7

+ 2 - 1
ActionTowerDefense/Assets/Resources/Prefab/Base/Base_Invisible.prefab

@@ -96,6 +96,7 @@ MonoBehaviour:
   ultimateTimes: 0
   posId: 0
   bd: {fileID: 0}
+  hp: 0
 --- !u!1 &1293812239296574527
 GameObject:
   m_ObjectHideFlags: 0
@@ -19697,7 +19698,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 1351829392413555710, guid: d5ff5851068cad54aa3b23c838e7137f, type: 3}
       propertyPath: m_IsActive
-      value: 1
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 1434017015877506114, guid: d5ff5851068cad54aa3b23c838e7137f, type: 3}
       propertyPath: m_Layer

+ 1 - 0
ActionTowerDefense/Assets/Resources/Prefab/Player.prefab

@@ -1070,6 +1070,7 @@ MonoBehaviour:
   maxCards: 3
   ownSpirits: ffffffffffffffffffffffff
   ultimateTimes: 000000000000000000000000
+  hps: 000000000000000000000000
 --- !u!1 &3571941039716665622
 GameObject:
   m_ObjectHideFlags: 0

+ 33 - 5
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -1634,10 +1634,17 @@ public class PlayerController : MoveCharacter
                 velocity = rushDir * rushSpeed;
                 break;
             case CharacterState.Die:
-                aniCollider.Play("Die", 0, 0);
-                ani.Play("die", 0, 0);
-                isDie = true;
-                dieKeepTime = totalDieKeepTime;
+                if (isTransfiguration)
+                {
+                    EndTransfiguration(endChange);
+                }
+                else
+                {
+                    aniCollider.Play("Die", 0, 0);
+                    ani.Play("die", 0, 0);
+                    isDie = true;
+                    dieKeepTime = totalDieKeepTime;
+                }
                 break;
             case CharacterState.Weak:
                 aniCollider.Play("Weak", 0, 0);
@@ -1768,14 +1775,32 @@ public class PlayerController : MoveCharacter
         }
         */
         endChange = id + 3;
-        dem.hp = hp;
+        curHp = hp;
+        curTotalHp = totalHp;
+        switch (playerId)
+        {
+            case 0:
+                hp = SpiritSystem.tranHp1;
+                totalHp = SpiritSystem.tranHp1;
+                break;
+            case 1:
+                hp = SpiritSystem.tranHp2;
+                totalHp = SpiritSystem.tranHp2;
+                break;
+            default:
+                break;
+        }
+        uiHp.Show(hp, totalHp);
         ChangeState(CharacterState.Idle);
     }
 
+    private int curHp;
+    private int curTotalHp;
     public bool endTranSummon;  //是否在结束变身后召唤英灵
 
     public void EndTransfiguration(int id)
     {
+        isBaseBtnOut = false;
         isTransfiguration = false;
         canfly = false;
         canJump = true;
@@ -1795,6 +1820,9 @@ public class PlayerController : MoveCharacter
         soulCollector = playerSoulCollector;
         outlineMats = playerOut;
         bodyTrans.gameObject.SetActive(true);
+        hp = curHp;
+        totalHp = curTotalHp;
+        uiHp.Show(hp, totalHp);
         uiHp.gameObject.SetActive(true);
         spiritObj.transform.parent = null;
         spiritObj.SetActive(false);

+ 9 - 4
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits/Base_Spirits.cs

@@ -20,6 +20,7 @@ public class Base_Spirits : MonoBehaviour
     public int posId;   //µÚ¼¸¸ö
 
     public BackDoor bd;
+    public int hp;
 
     private void Start()
     {
@@ -64,21 +65,24 @@ public class Base_Spirits : MonoBehaviour
     {
         if (other.gameObject.layer == 6)
         {
-            buttons.SetActive(false);
-            aa = 0;
-            XHoldEffect(aa);
             switch (id)
             {
                 case 0:
                     if (SpiritSystem.curCheckSpirit1 == buttons)
                     {
                         SpiritSystem.curCheckSpirit1 = null;
+                        buttons.SetActive(false);
+                        aa = 0;
+                        XHoldEffect(aa);
                     }
                     break;
                 case 1:
                     if (SpiritSystem.curCheckSpirit2 == buttons)
                     {
                         SpiritSystem.curCheckSpirit2 = null;
+                        buttons.SetActive(false);
+                        aa = 0;
+                        XHoldEffect(aa);
                     }
                     break;
                 default:
@@ -97,11 +101,12 @@ public class Base_Spirits : MonoBehaviour
             {
                 if (Corpse.allCorpsesNum >= needCorpse)
                 {
-                    if (pc.GetComponent<Spirits>().hasSpirits != 3)
+                    if (s.hasSpirits != 3)
                     {
                         Corpse.allCorpsesNum -= needCorpse;
                         Corpse.isChange = true;
                         s.ultimateTimes[s.hasSpirits] = ultimateTimes;
+                        s.hps[s.hasSpirits] = hp;
                         switch (id)
                         {
                             case 0:

+ 2 - 0
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits/SpiritOutDoor.cs

@@ -28,6 +28,7 @@ public class SpiritOutDoor : MonoBehaviour
         public int corpse;
         public Sprite introduction;
         public int ultimateTimes;
+        public int tranHp;
     }
 
     public BackDoor doorController;
@@ -78,6 +79,7 @@ public class SpiritOutDoor : MonoBehaviour
                 bs.posId = index;
                 doorController.maxSpirits -= 1;
                 bs.bd = doorController;
+                bs.hp = spirits[id].tranHp;
                 break;
             }
         }

+ 12 - 0
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits/SpiritSystem.cs

@@ -94,6 +94,10 @@ public class SpiritSystem : MonoBehaviour
     private bool isChangeUltimateText1;
     private bool isChangeUltimateText2;
 
+    //±äÉíºóѪÁ¿
+    static public int tranHp1;
+    static public int tranHp2;
+
     private void Start()
     {
         p1.position = p1Orig.position;
@@ -167,6 +171,7 @@ public class SpiritSystem : MonoBehaviour
                 if (s1.hasSpirits == 1)
                 {
                     s1.currentSpirit = s1.TranSpirit(spirit);
+                    tranHp1 = s1.hps[0];
                 }
                 break;
             case 1:
@@ -200,6 +205,7 @@ public class SpiritSystem : MonoBehaviour
                 if (s2.hasSpirits == 1)
                 {
                     s2.currentSpirit = s2.TranSpirit(spirit);
+                    tranHp2 = s2.hps[0];
                 }
                 break;
             default:
@@ -218,7 +224,9 @@ public class SpiritSystem : MonoBehaviour
                     player1cards[i].sprite = player1cards[i + 1].sprite;
                     s1.ownSpirits[i] = s1.ownSpirits[i + 1];
                     s1.ultimateTimes[i] = s1.ultimateTimes[i + 1];
+                    s1.hps[i] = s1.hps[i + 1];
                 }
+                tranHp1 = s1.hps[0];
                 player1cards[s1.hasSpirits].sprite = NoneHead;
                 s1.ownSpirits[s1.hasSpirits] = Spirits.SpiritType.None;
                 s1.currentSpirit = s1.ownSpirits[0];
@@ -233,7 +241,9 @@ public class SpiritSystem : MonoBehaviour
                     player2cards[i].sprite = player2cards[i + 1].sprite;
                     s2.ownSpirits[i] = s2.ownSpirits[i + 1];
                     s2.ultimateTimes[i] = s2.ultimateTimes[i + 1];
+                    s2.hps[i] = s2.hps[i + 1];
                 }
+                tranHp2 = s2.hps[0];
                 player2cards[s2.hasSpirits].sprite = NoneHead;
                 s2.ownSpirits[s2.hasSpirits] = Spirits.SpiritType.None;
                 s2.currentSpirit = s2.ownSpirits[0];
@@ -261,6 +271,7 @@ public class SpiritSystem : MonoBehaviour
                     }
                     choose1.transform.position = player1cards[curCard1].transform.position;
                     p1Spirits.currentSpirit = p1Spirits.ownSpirits[curCard1];
+                    tranHp1 = s1.hps[curCard1];
                 }
                 break;
             case 1:
@@ -274,6 +285,7 @@ public class SpiritSystem : MonoBehaviour
                     }
                     choose2.transform.position = player2cards[curCard2].transform.position;
                     p2Spirits.currentSpirit = p2Spirits.ownSpirits[curCard2];
+                    tranHp2 = s2.hps[curCard2];
                 }
                 break;
             default:

+ 1 - 0
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits/Spirits.cs

@@ -22,6 +22,7 @@ public class Spirits : MonoBehaviour
     public int maxCards;            //最多有多少张英灵牌
     public SpiritType[] ownSpirits; //已有的英灵牌
     public int[] ultimateTimes;     //英灵可使用的技能次数
+    public int[] hps;
 
     public SpiritType TranSpirit(int k)
     {