LAPTOP-OM1V99U2\永远de小亡灵 vor 1 Jahr
Ursprung
Commit
961f5fc76b
1 geänderte Dateien mit 82 neuen und 78 gelöschten Zeilen
  1. 82 78
      ActionTowerDefense/Assets/Scripts/CameraController.cs

+ 82 - 78
ActionTowerDefense/Assets/Scripts/CameraController.cs

@@ -26,8 +26,8 @@ public class CameraController : MonoBehaviour
     public float minDistance = 20;
     public float splitDistance = 30;
     public float mergeDistance = 16;
-    [HideInInspector]
-    public float distance;
+    public float distanceX;
+    public float distanceY;
     [HideInInspector]
     public float ratio;
 
@@ -52,9 +52,76 @@ public class CameraController : MonoBehaviour
         PlayerController player0 = PlayersInput.instance[0];
         PlayerController player1 = PlayersInput.instance[1];
 
+        if(player0!= null && player0!=player1)
+        {
+
+            Vector3 player0Pos = player0.transform.position;
+            Vector3 player1Pos = player1.transform.position;
+            distanceX = Mathf.Abs(player0Pos.x - player1Pos.x);
+            distanceY = Mathf.Abs(player0Pos.y - player1Pos.y);
+
+
+           
+            if (distanceX < mergeDistance)
+            {
+                if(distanceY < mergeDistance/2)
+                {
+                    if (isSplit)
+                    {
+                        CameraSplit(true);
+                    }
+                    else
+                    {
+
+                    }
+                }
+  
+            }
+            else if (distanceX > splitDistance)
+            {
+                if (!isSplit)
+                {
+                    CameraSplit(false);
+                    if (player0Pos.x < player1Pos.x)
+                    {
+                        player0Camera.rect = new Rect(0, 0, 0.5f, 1);
+                        player1Camera.rect = new Rect(0.5f, 0, 0.5f, 1);
+                    }
+                    else
+                    {
+                        player0Camera.rect = new Rect(0.5f, 0, 0.5f, 1);
+                        player1Camera.rect = new Rect(0, 0, 0.5f, 1);
+                    }
+                }
+                
+            }
+            else
+            {
+                if (isSplit)
+                {
+                    view = 0;
+                }
+                else
+                {
+                    view = Mathf.Clamp((distanceX - minDistance) * ratio, 0, maxView);
+                }
+                
+            }
+
+            if (isSplit)
+            {
+                lineInCamera.transform.localScale = new Vector3(
+                    Mathf.Clamp((distanceX - mergeDistance) * 0.01f, 0, lineMaxScale), 20, 1);
+            }
+        }
+    }
+    private void FixedUpdate()
+    {
+        PlayerController player0 = PlayersInput.instance[0];
+        PlayerController player1 = PlayersInput.instance[1];
         if (player0 == null)
         {
-            targetPos = new Vector3(0, offsetY, offsetZ);
+            return;
         }
         else if (player1 == player0)
         {
@@ -66,13 +133,17 @@ public class CameraController : MonoBehaviour
             {
                 targetPos = CameraTargetMove(player0);
             }
-            
+            mainCamera.transform.position =
+                Vector3.Lerp(mainCamera.transform.position, targetPos, lerpValue * Time.deltaTime);
         }
         else
         {
-            if(player0.isRevive && player1.isRevive)
+            player0TargetPos = CameraTargetMove(player0);
+            player1TargetPos = CameraTargetMove(player1);
+            if (player0.isRevive && player1.isRevive)
             {
-                targetPos = new Vector3(140, offsetY, offsetZ);
+                player0TargetPos = new Vector3(140, offsetY, offsetZ);
+                player1TargetPos = new Vector3(140, offsetY, offsetZ);
                 if (isSplit)
                 {
                     CameraSplit(true);
@@ -81,7 +152,7 @@ public class CameraController : MonoBehaviour
             }
             else if (player0.isRevive)
             {
-                targetPos = CameraTargetMove(player1);
+                player0TargetPos = CameraTargetMove(player1);
                 if (isSplit)
                 {
                     CameraSplit(true);
@@ -90,87 +161,20 @@ public class CameraController : MonoBehaviour
             }
             else 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)
-            {
-                player0TargetPos = CameraTargetMove(player0);
-                //leftID = 0;
-                player1TargetPos = CameraTargetMove(player1);
-                //rightID = 1;
-            }
-            else
-            {
-                player0TargetPos = CameraTargetMove(player1);
-                //leftID = 1;
                 player1TargetPos = CameraTargetMove(player0);
-                //rightID = 0;
-            }
-
-            view = Mathf.Clamp((distance - minDistance) * ratio, 0, maxView);
-            if (distance < mergeDistance)
-            {
                 if (isSplit)
                 {
                     CameraSplit(true);
-                }        
-            }
-            else
-            {
-                lineInCamera.transform.localScale = new Vector3(Mathf.Clamp(
-                    (distance - mergeDistance) * 0.01f, 0, lineMaxScale), 10, 1);
-                targetPos =
-                    Vector3.Lerp(player0Camera.transform.position, player1Camera.transform.position, 0.5f);
-            }
-            if (distance > splitDistance)
-            {
-                if (!isSplit)
-                {
-                    CameraSplit(false);
                 }
+                return;
             }
-            else
-            {
-                targetPos =
-                    Vector3.Lerp(player0Pos, player1Pos, 0.5f) + new Vector3(0, offsetY, offsetZ);
-            }
-
-        }
-    }
-    private void FixedUpdate()
-    {
-        if (PlayersInput.instance[1] == null)
-        {
-            mainCamera.transform.position =
-                Vector3.Lerp(mainCamera.transform.position, targetPos, lerpValue * Time.deltaTime);
-        }
-        else
-        {
-            if (lineInCamera.activeSelf)
-            {
-                cameraPos = targetPos;
-            }
-            else
-            {
-                cameraPos = Vector3.Lerp(mainCamera.transform.position,
-                    targetPos, lerpValue * Time.deltaTime);
-            }
-
-            mainCamera.transform.position = new Vector3(cameraPos.x, cameraPos.y,offsetZ - view);
+            
             player0Camera.transform.position = Vector3.Lerp(player0Camera.transform.position,
                 player0TargetPos, lerpValue * 2 * Time.deltaTime);
             player1Camera.transform.position = Vector3.Lerp(player1Camera.transform.position,
                 player1TargetPos, lerpValue * 2 * Time.deltaTime);
-
+            mainCamera.transform.position = Vector3.Lerp(player0Camera.transform.position,
+                    player1Camera.transform.position, 0.5f) + Vector3.back * view;
         }
 
     }