Jelajahi Sumber

变身状态死亡复活

LAPTOP-OM1V99U2\永远de小亡灵 1 tahun lalu
induk
melakukan
13d7738e8d

+ 72 - 24
ActionTowerDefense/Assets/Scripts/CameraController.cs

@@ -51,32 +51,70 @@ public class CameraController : MonoBehaviour
         ratio = maxView / (splitDistance - minDistance);
         //
 
-        if (PlayersInput.instance[0] == null)
+        PlayerController player0 = PlayersInput.instance[0];
+        PlayerController player1 = PlayersInput.instance[1];
+
+        if (player0 == null)
         {
             targetPos = Vector3.zero + new Vector3(0, offsetY, offsetZ);
         }
-        else if (PlayersInput.instance[1] == PlayersInput.instance[0])
+        else if (player1 == player0)
         {
-            targetPos = CameraTargetMove(PlayersInput.instance[0]);
+            if (player0.isRevive)
+            {
+                targetPos = new Vector3(140, offsetY, offsetZ);
+            }
+            else
+            {
+                targetPos = CameraTargetMove(player0);
+            }
+            
         }
         else
         {
-            Vector3 player0Pos = PlayersInput.instance[0].transform.position;
-            Vector3 player1Pos = PlayersInput.instance[1].transform.position;
+            if(player0.isRevive && player1.isRevive)
+            {
+                targetPos = new Vector3(140, offsetY, offsetZ);
+                if (isSplit)
+                {
+                    CameraSplit(true);
+                }
+                return;
+            }
+            else if (player0.isRevive)
+            {
+                targetPos = CameraTargetMove(player1);
+                if (isSplit)
+                {
+                    CameraSplit(true);
+                }
+                return;
+            }
+            if (player1.isRevive)
+            {
+                targetPos = CameraTargetMove(player0);
+                if (isSplit)
+                {
+                    CameraSplit(true);
+                }
+                return;
+            }
+            Vector3 player0Pos = player0.transform.position;
+            Vector3 player1Pos = player1.transform.position;
             distance = Vector3.Distance(player0Pos, player1Pos);
 
             if (player0Pos.x < player1Pos.x)
             {
-                leftTargetPos = CameraTargetMove(PlayersInput.instance[0]);
+                leftTargetPos = CameraTargetMove(player0);
                 leftID = 0;
-                rightTargetPos = CameraTargetMove(PlayersInput.instance[1]);
+                rightTargetPos = CameraTargetMove(player1);
                 rightID = 1;
             }
             else
             {
-                leftTargetPos = CameraTargetMove(PlayersInput.instance[1]);
+                leftTargetPos = CameraTargetMove(player1);
                 leftID = 1;
-                rightTargetPos = CameraTargetMove(PlayersInput.instance[0]);
+                rightTargetPos = CameraTargetMove(player0);
                 rightID = 0;
             }
 
@@ -85,13 +123,7 @@ public class CameraController : MonoBehaviour
             {
                 if (isSplit)
                 {
-                    mainCamera.enabled = true;
-                    leftCamera.enabled = false;
-                    rightCamera.enabled = false;
-                    lineInCamera.SetActive(false);
-                    isSplit = false;
-                    PlayersInput.instance[0].RapidReplyMp(rapidMpReplySpeed);
-                    PlayersInput.instance[1].RapidReplyMp(rapidMpReplySpeed);
+                    CameraSplit(true);
                 }        
             }
             else
@@ -105,13 +137,7 @@ public class CameraController : MonoBehaviour
             {
                 if (!isSplit)
                 {
-                    mainCamera.enabled = false;
-                    leftCamera.enabled = true;
-                    rightCamera.enabled = true;
-                    lineInCamera.SetActive(true);
-                    isSplit = true;
-                    PlayersInput.instance[0].NormalReplyMp();
-                    PlayersInput.instance[1].NormalReplyMp();
+                    CameraSplit(false);
                 }
             }
             else
@@ -150,7 +176,29 @@ public class CameraController : MonoBehaviour
         }
 
     }
-
+    public void CameraSplit(bool flag)
+    {
+        if (flag)
+        {
+            mainCamera.enabled = true;
+            leftCamera.enabled = false;
+            rightCamera.enabled = false;
+            lineInCamera.SetActive(false);
+            isSplit = false;
+            PlayersInput.instance[0].RapidReplyMp(rapidMpReplySpeed);
+            PlayersInput.instance[1].RapidReplyMp(rapidMpReplySpeed);
+        }
+        else
+        {
+            mainCamera.enabled = false;
+            leftCamera.enabled = true;
+            rightCamera.enabled = true;
+            lineInCamera.SetActive(true);
+            isSplit = true;
+            PlayersInput.instance[0].NormalReplyMp();
+            PlayersInput.instance[1].NormalReplyMp();
+        }
+    }
     Vector3 CameraTargetMove(PlayerController player)
     {
         Vector3 skewPos;

+ 40 - 0
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -1324,12 +1324,52 @@ public class PlayerController : MoveCharacter
             default:
                 break;
         }
+
+        if (isTransfiguration)
+        {
+            isTransfiguration = 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;
+            spiritObj.transform.parent = null;
+            spiritObj.SetActive(false);
+            endChange = 0;
+            switch (playerId)
+            {
+                case 0:
+                    SpiritSystem.isEndtran1 = true;
+                    break;
+                case 1:
+                    SpiritSystem.isEndtran2 = true;
+                    break;
+                default:
+                    break;
+            }
+        }
+
+
         bodyTrans.gameObject.SetActive(false);
         uiHp.transform.parent.gameObject.SetActive(false);
         rb.constraints = RigidbodyConstraints.FreezeAll;
         isRevive = true;
         reviveTime = 0;
     }
+
+
     public void PlayerRevive()
     {
         isRevive = false;