Pārlūkot izejas kodu

可以切换/召唤英灵

SZAND\msx_2 1 gadu atpakaļ
vecāks
revīzija
470740b44e

+ 14 - 11
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -607,20 +607,23 @@ public class PlayerController : MoveCharacter
         }
         if (btnTransfiguratePress)
         {
-            if (!isTransfiguration && spirits.currentSpirit != Spirits.SpiritType.None)
+            if (!isTransfiguration)
             {
-                switch (playerId)
+                if(spirits.currentSpirit != Spirits.SpiritType.None)
                 {
-                    case 0:
-                        SpiritSystem.isSelect1 = true;
-                        break;
-                    case 1:
-                        SpiritSystem.isSelect2 = true;
-                        break;
-                    default:
-                        break;
+                    switch (playerId)
+                    {
+                        case 0:
+                            SpiritSystem.isSelect1 = true;
+                            break;
+                        case 1:
+                            SpiritSystem.isSelect2 = true;
+                            break;
+                        default:
+                            break;
+                    }
+                    Transfiguration((int)spirits.currentSpirit + 3);
                 }
-                Transfiguration((int)spirits.currentSpirit + 3);
             }
             else
             {

+ 52 - 12
ActionTowerDefense/Assets/Scripts/Spirits/SpiritSystem.cs

@@ -79,6 +79,10 @@ public class SpiritSystem : MonoBehaviour
     static public GameObject curCheckSpirit1;
     static public GameObject curCheckSpirit2;
 
+    //Íæ¼ÒµÄspirits×é¼þ
+    private Spirits s1;
+    private Spirits s2;
+
     private void Start()
     {
         p1.position = p1Orig.position;
@@ -115,8 +119,11 @@ public class SpiritSystem : MonoBehaviour
         {
             case 0:
                 curCheckSpirit1.transform.parent.gameObject.SetActive(false);
-                Spirits s = PlayersInput.instance[0].GetComponent<Spirits>();
-                s.ownSpirits[s.hasSpirits] = s.TranSpirit(spirit);
+                if (s1 == null)
+                {
+                    s1= PlayersInput.instance[0].GetComponent<Spirits>();
+                }
+                s1.ownSpirits[s1.hasSpirits] = s1.TranSpirit(spirit);
                 Sprite newHead = NoneHead;
                 switch (spirit)
                 {
@@ -135,17 +142,20 @@ public class SpiritSystem : MonoBehaviour
                     default:
                         break;
                 }
-                player1cards[s.hasSpirits].sprite = newHead;
-                s.hasSpirits++;
-                if (s.hasSpirits == 1)
+                player1cards[s1.hasSpirits].sprite = newHead;
+                s1.hasSpirits++;
+                if (s1.hasSpirits == 1)
                 {
-                    s.currentSpirit = s.TranSpirit(spirit);
+                    s1.currentSpirit = s1.TranSpirit(spirit);
                 }
                 break;
             case 1:
                 curCheckSpirit2.transform.parent.gameObject.SetActive(false);
-                Spirits ss = PlayersInput.instance[0].GetComponent<Spirits>();
-                ss.ownSpirits[ss.hasSpirits] = ss.TranSpirit(spirit);
+                if (s2 == null)
+                {
+                    s2 = PlayersInput.instance[1].GetComponent<Spirits>();
+                }
+                s2.ownSpirits[s2.hasSpirits] = s2.TranSpirit(spirit);
                 Sprite newHead2 = NoneHead;
                 switch (spirit)
                 {
@@ -164,12 +174,40 @@ public class SpiritSystem : MonoBehaviour
                     default:
                         break;
                 }
-                player1cards[ss.hasSpirits].sprite = newHead2;
-                ss.hasSpirits++;
-                if (ss.hasSpirits == 1)
+                player1cards[s2.hasSpirits].sprite = newHead2;
+                s2.hasSpirits++;
+                if (s2.hasSpirits == 1)
+                {
+                    s2.currentSpirit = s2.TranSpirit(spirit);
+                }
+                break;
+            default:
+                break;
+        }
+    }
+
+    private void EndTranChangeUI(int id)
+    {
+        switch (id)
+        {
+            case 0:
+                s1.hasSpirits--;
+                for(int i = curCard1; i < s1.hasSpirits; i++)
+                {
+                    player1cards[i].sprite = player1cards[i + 1].sprite;
+                    s1.ownSpirits[i] = s1.ownSpirits[i + 1];
+                }
+                player1cards[s1.hasSpirits].sprite = NoneHead;
+                s1.currentSpirit = s1.ownSpirits[0];
+                choose1.transform.position = player1cards[0].transform.position;
+                curCard1 = 0;
+                break;
+            case 1:
+                for (int i = 0; i < s2.hasSpirits; i++)
                 {
-                    ss.currentSpirit = ss.TranSpirit(spirit);
+                    player2cards[i].sprite = player2cards[i + 1].sprite;
                 }
+                player2cards[s2.hasSpirits].sprite = NoneHead;
                 break;
             default:
                 break;
@@ -235,10 +273,12 @@ public class SpiritSystem : MonoBehaviour
             case 0:
                 P1icon.transform.localPosition = p1WordOrig.localPosition;
                 choose1.GetComponent<Image>().sprite = isChoosing;
+                EndTranChangeUI(0);
                 break;
             case 1:
                 P2icon.transform.localPosition = p2WordOrig.localPosition;
                 choose2.GetComponent<Image>().sprite = isChoosing;
+                EndTranChangeUI(1);
                 break;
             default:
                 break;