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