3d camera zoom in unity code example
Example 1: camera zooming in unity
using UnityEngine;
using System.Collections;
public class MouseWheelZoom : MonoBehaviour {
float curZoomPos, zoomTo;
float zoomFrom = 20f;
void Update ()
{
float y = Input.mouseScrollDelta.y;
if (y >= 1)
{
zoomTo -= 5f;
Debug.Log ("Zoomed In");
}
else if (y >= -1) {
zoomTo += 5f;
Debug.Log ("Zoomed Out");
}
curZoomPos = zoomFrom + zoomTo;
curZoomPos = Mathf.Clamp (curZoomPos, 5f, 35f);
zoomTo = Mathf.Clamp (zoomTo, -15f, 30f);
Camera.main.fieldOfView = curZoomPos;
}
Example 2: camera pinch zoom unity
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PanZoom : MonoBehaviour {
Vector3 touchStart;
public float zoomOutMin = 1;
public float zoomOutMax = 8;
void Update () {
if(Input.GetMouseButtonDown(0)){
touchStart = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
if(Input.touchCount == 2){
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 * 0.01f);
}else if(Input.GetMouseButton(0)){
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);
}
}