Hi guys. I would be grateful if someone can help me find a solution for my problem, as I’m trying to make a mobile game, but I can’t seem to limit the camera. Thank you all in advance.
using UnityEngine;
public class PanZoom : MonoBehaviour
{
Vector3 touchStart;
public float zoomOutMin = 200;
public float zoomOutMax = 450;
public bool isZooming;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
isZooming = false;
touchStart = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
if (Input.touchCount == 2)
{
isZooming = true;
Touch touchZero = Input.GetTouch(0);
Touch touchOne = Input.GetTouch(1);
Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;
float prevMagnitude = (touchZeroPrevPos - touchOnePrevPos).magnitude;
float currentMagnitude = (touchZero.position - touchOne.position).magnitude;
float difference = currentMagnitude - prevMagnitude;
zoom(difference * 1f);
}
else if (Input.GetMouseButton(0) && !isZooming)
{
Vector3 direction = touchStart - Camera.main.ScreenToWorldPoint(Input.mousePosition);
Camera.main.transform.position += direction;
}
zoom(Input.GetAxis("Mouse ScrollWheel"));
}
void zoom(float increment)
{
Camera.main.orthographicSize = Mathf.Clamp(Camera.main.orthographicSize - increment, zoomOutMin, zoomOutMax);
}
}