Ver código fonte

紫魂英灵重制版!!!

LAPTOP-OM1V99U2\永远de小亡灵 1 ano atrás
pai
commit
dfe2892bd7

+ 2 - 2
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -848,7 +848,7 @@ public class Enemy : MoveCharacter
                 Vector3 dir = new Vector3(Mathf.Cos(angle), Mathf.Sin(angle), 0);
                 Soul soul = soulObj.GetComponent<Soul>();
                 soul.Burst(dir * soulStartSpeed);
-                soul.type = (int)type;
+                soul.type = type;
             }
         }
         else
@@ -857,7 +857,7 @@ public class Enemy : MoveCharacter
             Vector3 dir = Vector3.up;
             Soul soul = soulObj.GetComponent<Soul>();
             soul.Burst(dir * soulStartSpeed);
-            soul.type = (int)type;
+            soul.type = type;
         }
     }
 

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

@@ -57,7 +57,7 @@ public class PlayerController : MoveCharacter
     public Collider soulCollector;
     public SkeletonMecanim skeletonMecanim;
     public SkeletonDataAsset[] playerSpine;
-    private Collider playerSoulCollector;
+    private SpiritSystem spiritSystem;
 
     [Header("血量")]
     private int curHp;
@@ -332,16 +332,9 @@ public class PlayerController : MoveCharacter
                 break;
         }
         skeletonMecanim.skeletonDataAsset = playerSpine[playerId];
-
-
-
-        //else
-        //{
-        //    DestroyImmediate(gameObject);
-        //    return;
-        //}
         demonicDic = new Dictionary<int, List<Demonic>>();
         Init();
+        spiritSystem = GameObject.Find("SpiritSystem").GetComponent<SpiritSystem>();
     }
 
     private void Update()
@@ -497,7 +490,8 @@ public class PlayerController : MoveCharacter
 
     }
 
-    void OnTransfigurate()      //变身
+    //召唤英灵
+    void OnTransfigurate() 
     {
         if (!keyTransfigurateRelease && !isFloat && canMove && !isBaseBtnOut)
         {
@@ -505,7 +499,8 @@ public class PlayerController : MoveCharacter
         }
     }
 
-    void OnTransfigurateUp()      //松开变身键
+    //松开变身英灵键
+    void OnTransfigurateUp()
     {
         if (!isBaseBtnOut)
         {
@@ -597,31 +592,9 @@ public class PlayerController : MoveCharacter
         }
         if (btnTransfiguratePress)
         {
-            if (spirits.currentSpirit != Spirits.SpiritType.None)
+            if (spirits.hasSpirits > 0)
             {
-                for (int i = 0; i < 3; i++)
-                {
-                    if (spirits.ownSpirits[i] == spirits.currentSpirit)
-                    {
-                        spirits.ultimateTimes[i] -= 1;
-                        break;
-                    }
-                }
-                switch (playerId)
-                {
-                    case 0:
-                        //SpiritSystem.isSelect1 = true;
-                        SpiritSystem.isEndtran1 = true;
-                        break;
-                    case 1:
-                        //SpiritSystem.isSelect2 = true;
-                        SpiritSystem.isEndtran2 = true;
-                        break;
-                    default:
-                        break;
-                }
-                //Transfiguration((int)spirits.currentSpirit + 3);
-                Summon((int)spirits.currentSpirit + 3);
+                Summon((int)spirits.ownSpirits[spirits.nowSpirit] + 3);
             }
             return true;
         }
@@ -1660,7 +1633,6 @@ public class PlayerController : MoveCharacter
 
     public void Transfiguration(int id) //变身
     {
-        playerSoulCollector = soulCollector;
         id = id - 3;
         if (id >= changePrefabs.Count)
         {
@@ -1730,69 +1702,10 @@ public class PlayerController : MoveCharacter
         endChange = id + 3;
         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);
     }
 
-    public void EndTransfiguration(int id)
-    {
-        isBaseBtnOut = false;
-        canfly = false;
-        canJump = true;
-        canMove = true;
-        rb.useGravity = true;
-        mecanim = playerMe;
-        ani = playerAni;
-        aniCollider = playerCol;
-        bodyTrans = playerTran;
-        beSearchTrigger = playerBst;
-        bulletPrefab = playerBullet;
-        searchTrigger = playerST;
-        foot = playerFoot;
-        spinee = playerSpinee;
-        mesh = playerMesh;
-        mats = playerMats;
-        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);
-        if (endTranSummon)
-        {
-            Summon(endChange);
-        }
-        CheckPlayerChangeState();
-        endChange = 0;
-        switch (playerId)
-        {
-            case 0:
-                SpiritSystem.isEndtran1 = true;
-                break;
-            case 1:
-                SpiritSystem.isEndtran2 = true;
-                break;
-            default:
-                break;
-        }
-    }
-
     public void Summon(int id)
     {
         if (id >= demonicPrefabs.Count)
@@ -1859,13 +1772,18 @@ public class PlayerController : MoveCharacter
         }
         demonic.player = this;
         demonic.Init();
-        int demonicCount = 0;
         int order = prefab.GetComponent<Demonic>().baseSortingOrder + demonicDic[demonic.id].Count;
         demonic.SetSortingOrder(order);
         if(id != 4)
         {
             demonic.Attack1();
         }
+        //id 3~6 为四个英灵
+        if(id >= 3 && id <= 6)
+        {
+            spirits.ultimateTimes[spirits.nowSpirit] -= 1;
+        }
+        spiritSystem.RefreshPlayerUI();
     }
 
     public void OnDemonicRecycle(Demonic demonic)

+ 3 - 2
ActionTowerDefense/Assets/Scripts/Soul.cs

@@ -34,7 +34,7 @@ public class Soul : MonoBehaviour
 
     [Header("×Ï»ê")]
     public bool isSourPurple;           //ÊÇ·ñÊÇ×Ï»ê
-    public int type;
+    public Spirits.SpiritType type;
     public SpiritSystem spiritSystem;
 
     private void Awake()
@@ -58,7 +58,7 @@ public class Soul : MonoBehaviour
         {
             for(int i = 0; i < 3; i++)
             {
-                if(type == (int)spirits.ownSpirits[i])
+                if(type == spirits.ownSpirits[i])
                 {
                     break;
                 }
@@ -69,6 +69,7 @@ public class Soul : MonoBehaviour
             }
         }
         collected = true;
+        GetComponent<BoxCollider>().enabled = false;
         tweenPos.from = transform;
         tweenPos.to = PlayersInput.instance[id].transform;
         tweenPos.duration = (tweenPos.from.position - tweenPos.to.position).magnitude / flySpeed;

+ 0 - 1
ActionTowerDefense/Assets/Scripts/SoulCollector.cs

@@ -16,7 +16,6 @@ public class SoulCollector : MonoBehaviour
         Soul soul = other.GetComponentInParent<Soul>();
         if (soul)
         {
-            other.GetComponent<BoxCollider>().enabled = false;
             if (player == null)
             {
                 player = GetComponentInParent<PlayerController>();

+ 22 - 22
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits/Base_Spirits.cs

@@ -40,17 +40,17 @@ public class Base_Spirits : MonoBehaviour
             pc = other.GetComponentInParent<PlayerController>();
             s = pc.GetComponent<Spirits>();
             id = pc.playerId;
-            switch (id)
-            {
-                case 0:
-                    SpiritSystem.ChangeCheckSpirit(buttons, 0);
-                    break;
-                case 1:
-                    SpiritSystem.ChangeCheckSpirit(buttons, 1);
-                    break;
-                default:
-                    break;
-            }
+            //switch (id)
+            //{
+            //    case 0:
+            //        SpiritSystem.ChangeCheckSpirit(buttons, 0);
+            //        break;
+            //    case 1:
+            //        SpiritSystem.ChangeCheckSpirit(buttons, 1);
+            //        break;
+            //    default:
+            //        break;
+            //}
         }
     }
 
@@ -107,17 +107,17 @@ public class Base_Spirits : MonoBehaviour
                         Corpse.isChange = true;
                         s.ultimateTimes[s.hasSpirits] = ultimateTimes;
                         s.hps[s.hasSpirits] = hp;
-                        switch (id)
-                        {
-                            case 0:
-                                SpiritSystem.isGainNewSpirit1 = type;
-                                break;
-                            case 1:
-                                SpiritSystem.isGainNewSpirit2 = type;
-                                break;
-                            default:
-                                break;
-                        }
+                        //switch (id)
+                        //{
+                        //    case 0:
+                        //        SpiritSystem.isGainNewSpirit1 = type;
+                        //        break;
+                        //    case 1:
+                        //        SpiritSystem.isGainNewSpirit2 = type;
+                        //        break;
+                        //    default:
+                        //        break;
+                        //}
                         SpiritOutDoor.curPos--;
                         bd.maxSpirits++;
                         SpiritOutDoor.restPoses[posId] = 2;

+ 142 - 239
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits/SpiritSystem.cs

@@ -74,17 +74,12 @@ public class SpiritSystem : MonoBehaviour
     static public bool isSelect1 = false;
     static public bool isSelect2 = false;
 
-    //是否结束变身
-    static public bool isEndtran1 = false;
-    static public bool isEndtran2 = false;
 
     //是否按下按钮
     static public bool isXbtnDown1 = false;
     static public bool isXbtnDown2 = false;
     static public bool isBbtnDown1 = false;
     static public bool isBbtnDown2 = false;
-    static public int isGainNewSpirit1 = -1;
-    static public int isGainNewSpirit2 = -1;
 
     //当前查看的英灵
     static public GameObject curCheckSpirit1;
@@ -93,12 +88,7 @@ public class SpiritSystem : MonoBehaviour
     //玩家的spirits组件
     private PlayerController pc1;
     private PlayerController pc2;
-    private Spirits s1;
-    private Spirits s2;
 
-    //变身后血量
-    static public int tranHp1;
-    static public int tranHp2;
 
     private void Start()
     {
@@ -107,258 +97,137 @@ public class SpiritSystem : MonoBehaviour
         XbtnKeepTime = keepTime;
     }
 
-    static public void ChangeCheckSpirit(GameObject newSpirit, int id)
+    //拾取一个紫魂统计各可变身次数
+    public void GainNewSpirit(int id, Spirits.SpiritType spirit)
     {
         switch (id)
         {
             case 0:
-                if (curCheckSpirit2 != newSpirit)
+                if (p1Spirits == null)
                 {
-                    if (curCheckSpirit1 != null)
-                    {
-                        curCheckSpirit1.SetActive(false);
-                    }
-                    curCheckSpirit1 = newSpirit;
-                    curCheckSpirit1.SetActive(true);
+                    pc1 = PlayersInput.instance[0];
+                    p1Spirits = pc1.GetComponent<Spirits>();
                 }
-                break;
-            case 1:
-                if (curCheckSpirit1 != newSpirit)
+                for (int i = 0; i < 3; i++)
                 {
-                    if (curCheckSpirit2 != null)
+                    if (p1Spirits.ownSpirits[i] == spirit)
                     {
-                        curCheckSpirit2.SetActive(false);
+                        p1Spirits.ultimateTimes[i] += 1;
+                        break;
                     }
-                    curCheckSpirit2 = newSpirit;
-                    curCheckSpirit2.SetActive(true);
-                }
-                break;
-            default:
-                break;
-        }
-    }
-
-    public void GainNewSpirit(int id, int spirit)
-    {
-        switch (id)
-        {
-            case 0:
-                //curCheckSpirit1.transform.parent.gameObject.SetActive(false);
-                if (s1 == null)
-                {
-                    pc1 = PlayersInput.instance[0];
-                    s1 = pc1.GetComponent<Spirits>();
-                }
-                for(int i = 0;i < 3; i++)
-                {
-                    if (s1.ownSpirits[i] == s1.TranSpirit(spirit))
+                    if (i == 2)
                     {
-                        s1.ultimateTimes[i] += 1;
-                        P1nums[i].text = (s1.ultimateTimes[i]).ToString();
-                        return;
+                        for(int j = 0; j < 3; j++)
+                        {
+                            if(p1Spirits.ultimateTimes[j] == 0)
+                            {
+                                p1Spirits.ownSpirits[j] = spirit;
+                                p1Spirits.ultimateTimes[j] = 1;
+                                p1Spirits.hasSpirits += 1;
+                                break;
+                            }
+                        }
                     }
                 }
-                s1.ownSpirits[s1.hasSpirits] = s1.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[s1.hasSpirits].sprite = newHead;
-                s1.ultimateTimes[s1.hasSpirits] = 1;
-                P1nums[s1.hasSpirits].text = (s1.ultimateTimes[s1.hasSpirits]).ToString();
-                P1nums[s1.hasSpirits].gameObject.SetActive(true);
-                s1.hasSpirits++;
-                if (s1.hasSpirits == 1)
-                {
-                    s1.currentSpirit = s1.TranSpirit(spirit);
-                    tranHp1 = s1.hps[0];
-                }
                 break;
             case 1:
-                //curCheckSpirit2.transform.parent.gameObject.SetActive(false);
-                if (s2 == null)
+                if (p2Spirits == null)
                 {
                     pc2 = PlayersInput.instance[1];
-                    s2 = pc2.GetComponent<Spirits>();
+                    p2Spirits = pc2.GetComponent<Spirits>();
                 }
                 for (int i = 0; i < 3; i++)
                 {
-                    if (s2.ownSpirits[i] == s2.TranSpirit(spirit))
+                    if (p2Spirits.ownSpirits[i] == spirit)
                     {
-                        s2.ultimateTimes[i] += 1;
-                        P2nums[i].text = (s2.ultimateTimes[i]).ToString();
-                        return;
-                    }
-                }
-                s2.ownSpirits[s2.hasSpirits] = s2.TranSpirit(spirit);
-                Sprite newHead2 = NoneHead;
-                switch (spirit)
-                {
-                    case 0:
-                        newHead2 = floatHead;
-                        break;
-                    case 1:
-                        newHead2 = AssassinHead;
-                        break;
-                    case 2:
-                        newHead2 = CookHead;
+                        p2Spirits.ultimateTimes[i] += 1;
                         break;
-                    case 3:
-                        newHead2 = InvisibleHead;
-                        break;
-                    default:
-                        break;
-                }
-                player2cards[s2.hasSpirits].sprite = newHead2;
-                s2.ultimateTimes[s2.hasSpirits] = 1;
-                P2nums[s2.hasSpirits].text = (s2.ultimateTimes[s2.hasSpirits]).ToString();
-                P2nums[s2.hasSpirits].gameObject.SetActive(true);
-                s2.hasSpirits++;
-                if (s2.hasSpirits == 1)
-                {
-                    s2.currentSpirit = s2.TranSpirit(spirit);
-                    tranHp2 = s2.hps[0];
-                }
-                break;
-            default:
-                break;
-        }
-    }
-
-    private void EndTranChangeUI(int id)
-    {
-        switch (id)
-        {
-            case 0:
-                if (s1.ultimateTimes[curCard1]==0)
-                {
-                    if (s1.hasSpirits > 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];
-                            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];
-                        choose1.transform.position = player1cards[0].transform.position;
-                        P1nums[s1.hasSpirits].gameObject.SetActive(false);
-                        curCard1 = 0;
                     }
-                }
-                else
-                {
-                    P1nums[curCard1].text = s1.ultimateTimes[curCard1].ToString();
-                }
-                break;
-            case 1:
-                if (s2.ultimateTimes[curCard2] == 0)
-                {
-                    if (s2.hasSpirits > 0)
+                    if (i == 2)
                     {
-                        s2.hasSpirits--;
-                        for (int i = curCard2; i < s2.hasSpirits; i++)
+                        for (int j = 0; j < 3; j++)
                         {
-                            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];
+                            if (p2Spirits.ultimateTimes[j] == 0)
+                            {
+                                p2Spirits.ownSpirits[j] = spirit;
+                                p2Spirits.ultimateTimes[j] = 1;
+                                p2Spirits.hasSpirits += 1;
+                                break;
+                            }
                         }
-                        tranHp2 = s2.hps[0];
-                        player2cards[s2.hasSpirits].sprite = NoneHead;
-                        s2.ownSpirits[s2.hasSpirits] = Spirits.SpiritType.None;
-                        s2.currentSpirit = s2.ownSpirits[0];
-                        choose2.transform.position = player2cards[0].transform.position;
-                        P2nums[s2.hasSpirits].gameObject.SetActive(false);
-                        curCard2 = 0;
                     }
                 }
-                else
-                {
-                    P2nums[curCard2].text = s2.ultimateTimes[curCard2].ToString();
-                }
-
-                break;
-            default:
                 break;
         }
+        RefreshPlayerUI();
     }
 
+
     public void ChangeSpirit(int id, bool chooseLeft)
     {
         switch (id)
         {
             case 0:
-                int man = p1Spirits.hasSpirits;
-                if (man != 0)
+                if (p1Spirits.hasSpirits > 0)
                 {
-                    if (chooseLeft)
+                    while (true)
                     {
-                        curCard1 -= 1;
-                        if(curCard1 == -1)
+                        if (chooseLeft)
                         {
-                            curCard1 = man - 1;
+                            curCard1 -= 1;
+                            if (curCard1 == -1)
+                            {
+                                curCard1 = 2;
+                            }
                         }
-                    }
-                    else
-                    {
-                        curCard1 += 1;
-                        if (curCard1 == man)
+                        else
                         {
-                            curCard1 = 0;
+                            curCard1 += 1;
+                            if (curCard1 == 3)
+                            {
+                                curCard1 = 0;
+                            }
+                        }
+                        if(p1Spirits.ultimateTimes[curCard1] > 0)
+                        {
+                            break;
                         }
                     }
+
                     choose1.transform.position = player1cards[curCard1].transform.position;
-                    p1Spirits.currentSpirit = p1Spirits.ownSpirits[curCard1];
-                    tranHp1 = s1.hps[curCard1];
+                    p1Spirits.nowSpirit = curCard1;
                 }
                 break;
             case 1:
-                int mann = p2Spirits.hasSpirits;
-                if (mann != 0)
+                if (p2Spirits.hasSpirits > 0)
                 {
-                    if (chooseLeft)
+                    while (true)
                     {
-                        curCard2 -= 1;
-                        if (curCard2 == -1)
+                        if (chooseLeft)
                         {
-                            curCard2 = mann - 1;
+                            curCard2 -= 1;
+                            if (curCard2 == -1)
+                            {
+                                curCard2 = 2;
+                            }
                         }
-                    }
-                    else
-                    {
-                        curCard2 += 1;
-                        if (curCard2 == mann)
+                        else
+                        {
+                            curCard2 += 1;
+                            if (curCard2 == 3)
+                            {
+                                curCard2 = 0;
+                            }
+                        }
+                        if (p2Spirits.ultimateTimes[curCard2] > 0)
                         {
-                            curCard2 = 0;
+                            break;
                         }
                     }
                     choose2.transform.position = player2cards[curCard2].transform.position;
-                    p2Spirits.currentSpirit = p2Spirits.ownSpirits[curCard2];
-                    tranHp2 = s2.hps[curCard2];
+                    p2Spirits.nowSpirit = curCard2;
                 }
                 break;
-            default:
-                break;
         }
     }
 
@@ -374,29 +243,9 @@ public class SpiritSystem : MonoBehaviour
                 P2icon.transform.localPosition = p2WordTo.localPosition;
                 choose2.GetComponent<Image>().sprite = isSelected;
                 break;
-            default:
-                break;
         }
     }
 
-    private void EndTransfigurate(int id)
-    {
-        switch (id)
-        {
-            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;
-        }
-    }
 
     private void playerUIout(int id)
     {
@@ -450,7 +299,6 @@ public class SpiritSystem : MonoBehaviour
 
     private void Update()
     {
-        //print(p1Spirits.ultimateTimes[curCard1]);
         if (isP1Out)
         {
             playerUIout(0);
@@ -516,27 +364,82 @@ public class SpiritSystem : MonoBehaviour
             isSelect2 = false;
             SelectSpirit(1);
         }
+    }
 
-        if (isEndtran1)
+    //刷新ui显示
+    public void RefreshPlayerUI()
+    {
+        p1Spirits.hasSpirits = 0;
+        if(p2Spirits != null)
         {
-            isEndtran1 = false;
-            EndTransfigurate(0);
+            p2Spirits.hasSpirits = 0;
         }
-        if (isEndtran2)
+        for(int i = 0; i < 3; i++)
         {
-            isEndtran2 = false;
-            EndTransfigurate(1);
-        }
 
-        if (isGainNewSpirit1 != -1)
+            if(p1Spirits.ultimateTimes[i] > 0)
+            {
+                if (!P1nums[i].gameObject.activeSelf)
+                {
+                    P1nums[i].gameObject.SetActive(true);
+                }
+                P1nums[i].text = p1Spirits.ultimateTimes[i].ToString();
+                if (p2Spirits != null)
+                {
+                    if (!P2nums[i].gameObject.activeSelf)
+                    {
+                        P2nums[i].gameObject.SetActive(true);
+                    }
+                    P2nums[i].text = p2Spirits.ultimateTimes[i].ToString();
+                    p2Spirits.hasSpirits += 1;
+                }
+                p1Spirits.hasSpirits += 1;
+            }
+            else
+            {
+                P1nums[i].gameObject.SetActive(false);
+                p1Spirits.ownSpirits[i] = Spirits.SpiritType.None;
+                P2nums[i].gameObject.SetActive(false);
+                if (p2Spirits != null)
+                {
+                    p2Spirits.ownSpirits[i] = Spirits.SpiritType.None;
+                }
+            }
+            player1cards[i].GetComponent<Image>().sprite = SpiritTypeToSprite(p1Spirits.ownSpirits[i]);
+            if(p2Spirits != null)
+            {
+                player2cards[i].GetComponent<Image>().sprite = SpiritTypeToSprite(p2Spirits.ownSpirits[i]);
+            }
+        }
+        if(p1Spirits.ultimateTimes[p1Spirits.nowSpirit] == 0)
         {
-            GainNewSpirit(0, isGainNewSpirit1);
-            isGainNewSpirit1 = -1;
+            if(p2Spirits != null)
+            {
+                ChangeSpirit(1, true);
+            }
+            ChangeSpirit(0, true);
         }
-        if (isGainNewSpirit2 != -1)
+    }
+
+    //SpiritType转图片
+    public Sprite SpiritTypeToSprite(Spirits.SpiritType spirit)
+    {
+        switch (spirit)
         {
-            GainNewSpirit(1, isGainNewSpirit2);
-            isGainNewSpirit2 = -1;
+            case Spirits.SpiritType.Float:
+                return floatHead;
+            case Spirits.SpiritType.Cook:
+                return CookHead;
+            case Spirits.SpiritType.Assassin:
+                return AssassinHead;
+            case Spirits.SpiritType.Invisible:
+                return InvisibleHead;
+            case Spirits.SpiritType.None:
+                return NoneHead;
+            default:
+                return null;
         }
     }
 }
+
+

+ 2 - 6
ActionTowerDefense/Assets/Scripts/Spirits/Base_Spirits/Spirits.cs

@@ -15,15 +15,11 @@ public class Spirits : MonoBehaviour
 
     public int types;               //英灵数量
 
-    public SpiritType currentSpirit = SpiritType.Float;
-    public int hasSpirits;          //已有的英灵牌数量
+    public int hasSpirits;          //已有的英灵牌种类
+    public int nowSpirit;           //选中的英灵
     public int maxCards;            //最多有多少张英灵牌
     public SpiritType[] ownSpirits; //已有的英灵牌
     public int[] ultimateTimes;     //英灵可使用的技能次数
     public int[] hps;
 
-    public SpiritType TranSpirit(int k)
-    {
-        return (SpiritType)k;
-    }
 }

+ 2 - 2
ActionTowerDefense/Assets/Scripts/Spirits/Trans_Assassin.cs

@@ -95,7 +95,7 @@ public class Trans_Assassin : MonoBehaviour
                 time += Time.deltaTime;
                 if (time >= nextRushTime)
                 {
-                    player.EndTransfiguration(4);
+                    //player.EndTransfiguration(4);
                     break;
                 }
                 if (player.isUltimate)
@@ -141,7 +141,7 @@ public class Trans_Assassin : MonoBehaviour
                     player.bodyTrans.rotation = Quaternion.Euler(Vector3.zero);
                     player.ChangeState(CharacterState.Fall);
                     time = 0;
-                    player.EndTransfiguration(4);
+                    //player.EndTransfiguration(4);
                 }
                 break;
         }

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Spirits/Trans_Cook.cs

@@ -25,7 +25,7 @@ public class Trans_Cook : MonoBehaviour
         if (controller.isUltimate)
         {
             controller.isUltimate = false;
-            controller.EndTransfiguration(2);
+            //controller.EndTransfiguration(2);
         }
     }
 }

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Spirits/Trans_Float.cs

@@ -30,7 +30,7 @@ public class Trans_Float : MonoBehaviour
         if (controller.isUltimate)
         {
             controller.isUltimate = false;
-            controller.EndTransfiguration(controller.endChange);
+            //controller.EndTransfiguration(controller.endChange);
         }
     }
 }

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Spirits/Trans_Invisible.cs

@@ -70,7 +70,7 @@ public class Trans_Invisible : MonoBehaviour
             GameObject effect = Instantiate(invisibleEffect);
             effect.transform.position = transform.position;
             
-            player.EndTransfiguration(6);
+            //player.EndTransfiguration(6);
             
         }
     }