缩放是控制摄像机的field of viewd 属性
直接上代码:
using UnityEngine;
using System.Collections;
using Lean.Touch;
public class ControlObj : MonoBehaviour
{
Vector3 screenPoint;
Vector3 StartPosition;
Vector3 previousPosition;
Vector3 offset;
Vector3 finalOffset;
Vector3 eulerAngle;
public float RotateSpeed = 1; //旋转速度
public float RotateInertiaSpeed = 0; //旋转惯性速度
bool isSlide;
float angle;
public float MouseWheelSensitivity = 10; //缩放单位
public float MouseZoomMin = 1f; //最小缩放
public float MouseZoomMax = 100f; //最大缩放
void Start()
{
}
void Update()
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
if (Camera.main.GetComponent<Camera>().fieldOfView >= MouseZoomMin && Camera.main.GetComponent<Camera>().fieldOfView <= MouseZoomMax)
{
Camera.main.GetComponent<Camera>().fieldOfView -= Input.GetAxis("Mouse ScrollWheel") *MouseWheelSensitivity;
}
if (Camera.main.GetComponent<Camera>().fieldOfView < MouseZoomMin)
{
Camera.main.GetComponent<Camera>().fieldOfView = MouseZoomMin;
}
if (Camera.main.GetComponent<Camera>().fieldOfView > MouseZoomMax)
{
Camera.main.GetComponent<Camera>().fieldOfView = MouseZoomMax;
}
}
if (Input.GetMouseButtonDown(0))
{
StartPosition = Input.mousePosition;
previousPosition = Input.mousePosition;
}
if (Input.GetMouseButton(0))
{
offset = Input.mousePosition - previousPosition;
previousPosition = Input.mousePosition;
transform.Rotate(Vector3.Cross(offset, Vector3.forward).normalized, offset.magnitude * RotateSpeed, Space.World);
}
if (Input.GetMouseButtonUp(0))
{
finalOffset = Input.mousePosition - StartPosition;
isSlide = true;
angle = finalOffset.magnitude;
}
if (isSlide)
{
transform.Rotate(Vector3.Cross(finalOffset, Vector3.forward).normalized, angle * RotateInertiaSpeed * Time.deltaTime, Space.World);
if (angle > 0)
{
angle -= 5;
}
else
{
angle = 0;
}
}
}
}