Browse Source

相机加上offset

LAPTOP-OM1V99U2\永远de小亡灵 1 năm trước cách đây
mục cha
commit
4e0f168711

+ 1 - 4
ActionTowerDefense/Assets/Scenes/SampleScene.unity

@@ -1038,12 +1038,9 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 584ea0f557c97344f9b229261554243d, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  offsetX: 6
+  offsetX: 5
   offsetY: 3
   offsetZ: -16
-  splitOffsetX: 0
-  splitOffsetY: 3
-  splitOffsetZ: -16
   lerpValue: 3.5
   targetPos: {x: 0, y: 0, z: 0}
   leftTargetPos: {x: 0, y: 0, z: 0}

+ 18 - 23
ActionTowerDefense/Assets/Scripts/CameraController.cs

@@ -4,8 +4,7 @@ using UnityEngine;
 
 public class CameraController : MonoBehaviour
 {
-    public float offsetX = 6, offsetY = 3, offsetZ = -16;
-    public float splitOffsetX = 0, splitOffsetY = 3, splitOffsetZ = -16;
+    public float offsetX = 5, offsetY = 3, offsetZ = -16;
     public float lerpValue = 3.5f;
 
     [HideInInspector]
@@ -48,29 +47,26 @@ public class CameraController : MonoBehaviour
         }
         else if (PlayersInput.instance[1] == null)
         {
-            targetPos = CameraTargetMove(PlayersInput.instance[0], offsetX, offsetY,offsetZ);
+            targetPos = CameraTargetMove(PlayersInput.instance[0]);
         }
         else
         {
             Vector3 player0Pos = PlayersInput.instance[0].transform.position;
             Vector3 player1Pos = PlayersInput.instance[1].transform.position;
             distance = Vector3.Distance(player0Pos, player1Pos);
-            targetPos = (player0Pos + player1Pos)/2f + new Vector3(0, offsetY, offsetZ);
+
             if (player0Pos.x < player1Pos.x)
             {
-                leftTargetPos = CameraTargetMove(PlayersInput.instance[0],
-                    splitOffsetX, splitOffsetY, splitOffsetZ);
-                rightTargetPos = CameraTargetMove(PlayersInput.instance[1],
-                    splitOffsetX, splitOffsetY, splitOffsetZ);
+                leftTargetPos = CameraTargetMove(PlayersInput.instance[0]);
+                rightTargetPos = CameraTargetMove(PlayersInput.instance[1]);
             }
             else
             {
-                leftTargetPos = CameraTargetMove(PlayersInput.instance[1],
-                    splitOffsetX, splitOffsetY, splitOffsetZ);
-                rightTargetPos = CameraTargetMove(PlayersInput.instance[0],
-                    splitOffsetX, splitOffsetY, splitOffsetZ);
+                leftTargetPos = CameraTargetMove(PlayersInput.instance[1]);
+                rightTargetPos = CameraTargetMove(PlayersInput.instance[0]);
 
             }
+            targetPos = Vector3.Lerp(leftCamera.transform.position, rightCamera.transform.position, 0.5f);
             field = Mathf.Clamp(minField + (distance - minDistance) * ratio, minField, maxField);
             if (distance < mergeDistance)
             {
@@ -79,14 +75,14 @@ public class CameraController : MonoBehaviour
                 rightCamera.enabled = false;
                 lineInCamera.SetActive(false);
             }
-            if(distance > splitDistance) 
+            if (distance > splitDistance)
             {
                 mainCamera.enabled = false;
                 leftCamera.enabled = true;
                 rightCamera.enabled = true;
                 lineInCamera.SetActive(true);
-                lineInCamera.transform.localScale =new Vector3(Mathf.Clamp(
-                    (distance - mergeDistance)*0.01f,0, lineMaxScale),10,1);
+                lineInCamera.transform.localScale = new Vector3(Mathf.Clamp(
+                    (distance - mergeDistance) * 0.01f, 0, lineMaxScale), 10, 1);
             }
 
         }
@@ -100,28 +96,27 @@ public class CameraController : MonoBehaviour
         }
         else
         {
-            mainCamera.transform.position =
-                   Vector3.Lerp(mainCamera.transform.position, targetPos, lerpValue * Time.deltaTime);
-            leftCamera.transform.position = Vector3.Lerp(leftCamera.transform.position, 
+            mainCamera.transform.position = targetPos;
+            leftCamera.transform.position = Vector3.Lerp(leftCamera.transform.position,
                 leftTargetPos, lerpValue * Time.deltaTime);
-            rightCamera.transform.position = Vector3.Lerp(rightCamera.transform.position, 
+            rightCamera.transform.position = Vector3.Lerp(rightCamera.transform.position,
                 rightTargetPos, lerpValue * Time.deltaTime);
             mainCamera.fieldOfView = field;
 
         }
-        
+
     }
 
-    Vector3 CameraTargetMove(PlayerController player, float X, float Y,float Z)
+    Vector3 CameraTargetMove(PlayerController player)
     {
         Vector3 skewPos;
         if (player.bodyTrans.localScale.x > 0)
         {
-            skewPos = player.transform.position + new Vector3(-X, Y, Z);
+            skewPos = player.transform.position + new Vector3(-offsetX, offsetY, offsetZ);
         }
         else
         {
-            skewPos = player.transform.position + new Vector3(X, Y, Z);
+            skewPos = player.transform.position + new Vector3(offsetX, offsetY, offsetZ);
         }
         return skewPos;
     }