SZAND\msx_2 1 рік тому
батько
коміт
880c13c1c6

+ 3 - 3
ActionTowerDefense/Assets/Resources/Prefab/Player.prefab

@@ -1062,10 +1062,10 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   types: 4
   floatEffect: {fileID: 417478504669294145, guid: 243eb0eff66414445990654286d861d1, type: 3}
-  currentSpirit: 0
-  hasSpirits: 3
+  currentSpirit: -1
+  hasSpirits: 0
   maxCards: 3
-  ownSpirits: 010000000000000002000000
+  ownSpirits: 000000000000000000000000
 --- !u!1 &3571941039716665622
 GameObject:
   m_ObjectHideFlags: 0

+ 4 - 1
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -620,7 +620,10 @@ public class PlayerController : MoveCharacter
                     default:
                         break;
                 }
-                Transfiguration((int)spirits.currentSpirit + 3);
+                if (spirits.currentSpirit != Spirits.SpiritType.None)
+                {
+                    Transfiguration((int)spirits.currentSpirit + 3);
+                }
             }
             else
             {

+ 5 - 3
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits.cs

@@ -13,6 +13,7 @@ public class Base_Spirits : MonoBehaviour
     private GameObject spirit;
 
     public int needCorpse;
+    public int type;
 
     private PlayerController pc;
     private int id;
@@ -88,7 +89,7 @@ public class Base_Spirits : MonoBehaviour
 
     private void Update()
     {
-        if (id == 0 && SpiritSystem.isXbtnDown1 || id == 1 && SpiritSystem.isXbtnDown2)
+        if (buttons.activeSelf && id == 0 && SpiritSystem.isXbtnDown1 || id == 1 && SpiritSystem.isXbtnDown2)
         {
             aa += speed * Time.deltaTime;
             XHoldEffect(aa);
@@ -96,13 +97,14 @@ public class Base_Spirits : MonoBehaviour
             {
                 if (Corpse.allCorpsesNum >= needCorpse)
                 {
+                    Corpse.allCorpsesNum -= needCorpse;
                     switch (id)
                     {
                         case 0:
-                            SpiritSystem.isGainNewSpirit1 = true;
+                            SpiritSystem.isGainNewSpirit1 = type;
                             break;
                         case 1:
-                            SpiritSystem.isGainNewSpirit2 = true;
+                            SpiritSystem.isGainNewSpirit2 = type;
                             break;
                         default:
                             break;

+ 3 - 1
ActionTowerDefense/Assets/Scripts/Spirits/SpiritOutDoor.cs

@@ -56,7 +56,9 @@ public class SpiritOutDoor : MonoBehaviour
         dir = (int)(2 * (Random.Range(0, 2) - 0.5f));
         Vector3 force = new Vector3(Random.Range(minForceX, maxForceX) * dir, Random.Range(minForceY, maxForceY), 0);
         g.GetComponent<Rigidbody>().velocity = force;
-        g.GetComponentInChildren<Base_Spirits>().needCorpse = spirits[id].corpse;
+        Base_Spirits bs = g.GetComponentInChildren<Base_Spirits>();
+        bs.needCorpse = spirits[id].corpse;
+        bs.type = (int)spirits[id].type;
     }
 
     private void OnTriggerEnter(Collider other)

+ 33 - 10
ActionTowerDefense/Assets/Scripts/Spirits/SpiritSystem.cs

@@ -41,6 +41,7 @@ public class SpiritSystem : MonoBehaviour
     public Sprite CookHead;
     public Sprite AssassinHead;
     public Sprite InvisibleHead;
+    public Sprite NoneHead;
     public Sprite isChoosing;
     public Sprite isSelected;
 
@@ -71,8 +72,8 @@ public class SpiritSystem : MonoBehaviour
     static public bool isXbtnDown2 = false;
     static public bool isBbtnDown1 = false;
     static public bool isBbtnDown2 = false;
-    static public bool isGainNewSpirit1 = false;
-    static public bool isGainNewSpirit2 = false;
+    static public int isGainNewSpirit1 = -1;
+    static public int isGainNewSpirit2 = -1;
 
     //µ±Ç°²é¿´µÄÓ¢Áé
     static public GameObject curCheckSpirit1;
@@ -108,12 +109,34 @@ public class SpiritSystem : MonoBehaviour
         }
     }
 
-    private void GainNewSpirit(int id)
+    private void GainNewSpirit(int id, int spirit)
     {
         switch (id)
         {
             case 0:
-                curCheckSpirit1.SetActive(false);
+                curCheckSpirit1.transform.parent.gameObject.SetActive(false);
+                Spirits s = PlayersInput.instance[0].GetComponent<Spirits>();
+                s.ownSpirits[s.hasSpirits] = s.TranSpirit(spirit);
+                Sprite newHead = NoneHead;
+                switch (spirit)
+                {
+                    case 0:
+                        newHead = floatHead;
+                        break;
+                    case 1:
+                        newHead = AssassinHead;
+                        break;
+                    case 2:
+                        newHead = CookHead;
+                        break;
+                    case 3:
+                        newHead = InvisibleHead;
+                        break;
+                    default:
+                        break;
+                }
+                player1cards[s.hasSpirits].sprite = newHead;
+                s.hasSpirits++;
                 break;
             case 1:
                 curCheckSpirit2.SetActive(false);
@@ -294,15 +317,15 @@ public class SpiritSystem : MonoBehaviour
             EndTransfigurate(1);
         }
 
-        if (isGainNewSpirit1)
+        if (isGainNewSpirit1 != -1)
         {
-            isGainNewSpirit1 = false;
-            GainNewSpirit(0);
+            GainNewSpirit(0, isGainNewSpirit1);
+            isGainNewSpirit1 = -1;
         }
-        if (isGainNewSpirit2)
+        if (isGainNewSpirit2 != -1)
         {
-            isGainNewSpirit2 = false;
-            GainNewSpirit(1);
+            GainNewSpirit(1, isGainNewSpirit2);
+            isGainNewSpirit2 = -1;
         }
     }
 }

+ 3 - 3
ActionTowerDefense/Assets/Scripts/Spirits/Spirits.cs

@@ -6,6 +6,7 @@ public class Spirits : MonoBehaviour
 {
     public enum SpiritType          //英灵种类
     {
+        None = -1,
         Float = 0,                  //漂浮
         Assassin = 1,               //刺客
         Cook = 2,                   //厨师
@@ -21,9 +22,8 @@ public class Spirits : MonoBehaviour
     public int maxCards;            //最多有多少张英灵牌
     public SpiritType[] ownSpirits; //已有的英灵牌
 
-    public void RandomSpirit()
+    public SpiritType TranSpirit(int k)
     {
-        int a = Random.Range(0, types);
-        currentSpirit = (SpiritType)a;
+        return (SpiritType)k;
     }
 }