Unity3D类英雄联盟镜头控制(平移和缩放)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraControl : MonoBehaviour
{
public float camFieldMax = 30f, camFieldMin = 5f;
Camera cam;
private Rect RectUp;
private Rect RectDown;
private Rect RectLeft;
private Rect RectRight;
public float RectSize = 50f;
public float CameraMoveSpeed = 0.5f,CameraScaleSpeed=0.5f;
// Start is called before the first frame update
void Start()
{
cam = GetComponent<Camera>();
//设置4个边界
RectUp = new Rect(0, Screen.height - RectSize, Screen.width, RectSize);
RectDown = new Rect(0, 0, Screen.width, RectSize);
RectLeft = new Rect(0, 0, RectSize, Screen.height);
RectRight = new Rect(Screen.width - RectSize, 0, RectSize, Screen.height);
}
// Update is called once per frame
void Update()
{
//缩放部分
if (Input.GetAxis("Mouse ScrollWheel")<0)
{
if (cam.fieldOfView <= camFieldMax)
{
cam.fieldOfView = cam.fieldOfView + CameraScaleSpeed;
}
}
if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
if (cam.fieldOfView >= camFieldMin)
{
cam.fieldOfView = cam.fieldOfView - CameraScaleSpeed;
}
}
//平移部分
if (RectUp.Contains(Input.mousePosition))
{
transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + CameraMoveSpeed);
}
if (RectDown.Contains(Input.mousePosition))
{
transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - CameraMoveSpeed);
}
if (RectLeft.Contains(Input.mousePosition))
{
transform.position = new Vector3(transform.position.x - CameraMoveSpeed, transform.position.y, transform.position.z);
}
if (RectRight.Contains(Input.mousePosition))
{
transform.position = new Vector3(transform.position.x + CameraMoveSpeed, transform.position.y, transform.position.z);
}
}
}
直接挂在摄像机上面就可以了,设置好参数。