|
|
@@ -13,15 +13,16 @@ public class CameraController : MonoBehaviour
|
|
|
public Vector3 leftTargetPos;
|
|
|
[HideInInspector]
|
|
|
public Vector3 rightTargetPos;
|
|
|
+ [HideInInspector]
|
|
|
+ public Vector3 cameraPos;
|
|
|
|
|
|
public Camera mainCamera;
|
|
|
public Camera leftCamera;
|
|
|
public Camera rightCamera;
|
|
|
|
|
|
- public float minField = 55;
|
|
|
- public float maxField = 75;
|
|
|
+ public float maxView = 20;
|
|
|
[HideInInspector]
|
|
|
- public float field;
|
|
|
+ public float view;
|
|
|
public float minDistance = 20;
|
|
|
public float splitDistance = 30;
|
|
|
public float mergeDistance = 16;
|
|
|
@@ -37,10 +38,14 @@ public class CameraController : MonoBehaviour
|
|
|
|
|
|
private void Start()
|
|
|
{
|
|
|
- ratio = (maxField - minField) / (splitDistance - minDistance);
|
|
|
+ //ratio = maxView / (splitDistance - minDistance);
|
|
|
}
|
|
|
private void Update()
|
|
|
{
|
|
|
+ //µ÷²ÎÓÃ
|
|
|
+ ratio = maxView / (splitDistance - minDistance);
|
|
|
+ //
|
|
|
+
|
|
|
if (PlayersInput.instance[0] == null)
|
|
|
{
|
|
|
targetPos = Vector3.zero + new Vector3(0, offsetY, offsetZ);
|
|
|
@@ -66,14 +71,22 @@ public class CameraController : MonoBehaviour
|
|
|
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);
|
|
|
+
|
|
|
+ view = Mathf.Clamp((distance - minDistance) * ratio, 0, maxView);
|
|
|
if (distance < mergeDistance)
|
|
|
{
|
|
|
mainCamera.enabled = true;
|
|
|
leftCamera.enabled = false;
|
|
|
rightCamera.enabled = false;
|
|
|
lineInCamera.SetActive(false);
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ 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);
|
|
|
}
|
|
|
if (distance > splitDistance)
|
|
|
{
|
|
|
@@ -81,8 +94,12 @@ public class CameraController : MonoBehaviour
|
|
|
leftCamera.enabled = true;
|
|
|
rightCamera.enabled = true;
|
|
|
lineInCamera.SetActive(true);
|
|
|
- lineInCamera.transform.localScale = new Vector3(Mathf.Clamp(
|
|
|
- (distance - mergeDistance) * 0.01f, 0, lineMaxScale), 10, 1);
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ targetPos =
|
|
|
+ Vector3.Lerp(player0Pos, player1Pos, 0.5f) + new Vector3(0, offsetY, offsetZ);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -96,12 +113,21 @@ public class CameraController : MonoBehaviour
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- mainCamera.transform.position = targetPos;
|
|
|
+ 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);
|
|
|
leftCamera.transform.position = Vector3.Lerp(leftCamera.transform.position,
|
|
|
leftTargetPos, lerpValue * Time.deltaTime);
|
|
|
rightCamera.transform.position = Vector3.Lerp(rightCamera.transform.position,
|
|
|
rightTargetPos, lerpValue * Time.deltaTime);
|
|
|
- mainCamera.fieldOfView = field;
|
|
|
|
|
|
}
|
|
|
|