Procházet zdrojové kódy

相机分屏暂存

LAPTOP-OM1V99U2\永远de小亡灵 před 1 rokem
rodič
revize
84978a5cbe

+ 6 - 8
ActionTowerDefense/Assets/Scenes/SampleScene.unity

@@ -11031,7 +11031,7 @@ GameObject:
   - component: {fileID: 815407865}
   - component: {fileID: 815407867}
   m_Layer: 0
-  m_Name: LeftCamera
+  m_Name: Player0Camera
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -11191,7 +11191,7 @@ GameObject:
   - component: {fileID: 850878592}
   - component: {fileID: 850878590}
   m_Layer: 0
-  m_Name: RightCamera
+  m_Name: Player1Camera
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -16421,12 +16421,12 @@ MonoBehaviour:
   offsetZ: -17
   lerpValue: 3.5
   targetPos: {x: 0, y: 0, z: 0}
-  leftTargetPos: {x: 0, y: 0, z: 0}
-  rightTargetPos: {x: 0, y: 0, z: 0}
+  player0TargetPos: {x: 0, y: 0, z: 0}
+  player1TargetPos: {x: 0, y: 0, z: 0}
   cameraPos: {x: 0, y: 0, z: 0}
   mainCamera: {fileID: 519420031}
-  leftCamera: {fileID: 815407867}
-  rightCamera: {fileID: 850878590}
+  player0Camera: {fileID: 815407867}
+  player1Camera: {fileID: 850878590}
   maxView: 8
   view: 0
   minDistance: 20
@@ -16436,8 +16436,6 @@ MonoBehaviour:
   ratio: 0
   lineMaxScale: 0.5
   lineInCamera: {fileID: 3490440115155743560}
-  leftID: 0
-  rightID: 0
   isSplit: 0
   rapidMpReplySpeed: 15
 --- !u!4 &1055802830

+ 44 - 29
ActionTowerDefense/Assets/Scripts/CameraController.cs

@@ -10,15 +10,15 @@ public class CameraController : MonoBehaviour
     [HideInInspector]
     public Vector3 targetPos;
     [HideInInspector]
-    public Vector3 leftTargetPos;
+    public Vector3 player0TargetPos;
     [HideInInspector]
-    public Vector3 rightTargetPos;
+    public Vector3 player1TargetPos;
     [HideInInspector]
     public Vector3 cameraPos;
 
     public Camera mainCamera;
-    public Camera leftCamera;
-    public Camera rightCamera;
+    public Camera player0Camera;
+    public Camera player1Camera;
 
     public float maxView = 20;
     [HideInInspector]
@@ -35,20 +35,18 @@ public class CameraController : MonoBehaviour
 
     public GameObject lineInCamera;
 
-    public int leftID;
-    public int rightID;
     public bool isSplit;
 
     public float rapidMpReplySpeed;
 
     private void Start()
     {
-        //ratio = maxView / (splitDistance - minDistance);
+        ratio = maxView / (splitDistance - minDistance);
     }
     private void Update()
     {
         //µ÷²ÎÓÃ
-        ratio = maxView / (splitDistance - minDistance);
+        //ratio = maxView / (splitDistance - minDistance);
         //
 
         PlayerController player0 = PlayersInput.instance[0];
@@ -56,7 +54,7 @@ public class CameraController : MonoBehaviour
 
         if (player0 == null)
         {
-            targetPos = Vector3.zero + new Vector3(0, offsetY, offsetZ);
+            targetPos = new Vector3(0, offsetY, offsetZ);
         }
         else if (player1 == player0)
         {
@@ -90,7 +88,7 @@ public class CameraController : MonoBehaviour
                 }
                 return;
             }
-            if (player1.isRevive)
+            else if (player1.isRevive)
             {
                 targetPos = CameraTargetMove(player0);
                 if (isSplit)
@@ -105,17 +103,17 @@ public class CameraController : MonoBehaviour
 
             if (player0Pos.x < player1Pos.x)
             {
-                leftTargetPos = CameraTargetMove(player0);
-                leftID = 0;
-                rightTargetPos = CameraTargetMove(player1);
-                rightID = 1;
+                player0TargetPos = CameraTargetMove(player0);
+                //leftID = 0;
+                player1TargetPos = CameraTargetMove(player1);
+                //rightID = 1;
             }
             else
             {
-                leftTargetPos = CameraTargetMove(player1);
-                leftID = 1;
-                rightTargetPos = CameraTargetMove(player0);
-                rightID = 0;
+                player0TargetPos = CameraTargetMove(player1);
+                //leftID = 1;
+                player1TargetPos = CameraTargetMove(player0);
+                //rightID = 0;
             }
 
             view = Mathf.Clamp((distance - minDistance) * ratio, 0, maxView);
@@ -131,7 +129,7 @@ public class CameraController : MonoBehaviour
                 lineInCamera.transform.localScale = new Vector3(Mathf.Clamp(
                     (distance - mergeDistance) * 0.01f, 0, lineMaxScale), 10, 1);
                 targetPos =
-                    Vector3.Lerp(leftCamera.transform.position, rightCamera.transform.position, 0.5f);
+                    Vector3.Lerp(player0Camera.transform.position, player1Camera.transform.position, 0.5f);
             }
             if (distance > splitDistance)
             {
@@ -168,10 +166,10 @@ public class CameraController : MonoBehaviour
             }
 
             mainCamera.transform.position = new Vector3(cameraPos.x, cameraPos.y,offsetZ - view);
-            leftCamera.transform.position = Vector3.Lerp(leftCamera.transform.position,
-                leftTargetPos, lerpValue * Time.deltaTime);
-            rightCamera.transform.position = Vector3.Lerp(rightCamera.transform.position,
-                rightTargetPos, lerpValue * Time.deltaTime);
+            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);
 
         }
 
@@ -181,8 +179,8 @@ public class CameraController : MonoBehaviour
         if (flag)
         {
             mainCamera.enabled = true;
-            leftCamera.enabled = false;
-            rightCamera.enabled = false;
+            player0Camera.enabled = false;
+            player1Camera.enabled = false;
             lineInCamera.SetActive(false);
             isSplit = false;
             PlayersInput.instance[0].RapidReplyMp(rapidMpReplySpeed);
@@ -191,8 +189,8 @@ public class CameraController : MonoBehaviour
         else
         {
             mainCamera.enabled = false;
-            leftCamera.enabled = true;
-            rightCamera.enabled = true;
+            player0Camera.enabled = true;
+            player1Camera.enabled = true;
             lineInCamera.SetActive(true);
             isSplit = true;
             PlayersInput.instance[0].NormalReplyMp();
@@ -204,12 +202,29 @@ public class CameraController : MonoBehaviour
         Vector3 skewPos;
         if (player.bodyTrans.localScale.x > 0)
         {
-            skewPos = player.transform.position + new Vector3(-offsetX, offsetY, offsetZ);
+            if (isSplit)
+            {
+                skewPos = player.transform.position + new Vector3(-offsetX/2, offsetY, offsetZ);
+            }
+            else
+            {
+                skewPos = player.transform.position + new Vector3(-offsetX, offsetY, offsetZ);
+            }
+            
         }
         else
         {
-            skewPos = player.transform.position + new Vector3(offsetX, offsetY, offsetZ);
+            if (isSplit)
+            {
+                skewPos = player.transform.position + new Vector3(offsetX / 2, offsetY, offsetZ);
+            }
+            else
+            {
+                skewPos = player.transform.position + new Vector3(offsetX, offsetY, offsetZ);
+            }
+
         }
+        //skewPos = player.transform.position + new Vector3(0, offsetY, offsetZ);
         return skewPos;
     }
 }