在U3D中,有的时候需要能够滚动鼠标来控制视野范围,接下来分享一下自己的代码,代码
using UnityEngine;
using System.Collections;
public class CamerController : MonoBehaviour {
public Transform cameraTrans;
public Camera mainCam;
private Vector2 xLimit;
private Vector2 yLimit;
public Vector2 scrollLimit;
private Vector3 mouseStartPos;
private Vector3 lastPos;
private bool inRightMouse = false;
private int curntScrollValue = 0;
private void RightMouthButtonCheckUpdeate() {
if (Input.GetMouseButtonDown(1))
{
InRightMouseState();
}
if (Input.GetMouseButtonUp(1))
{
OutRightMouseState();
}
}
private void InRightMouseState() {
mouseStartPos = Input.mousePosition;
lastPos = mouseStartPos;
inRightMouse = true;
}
private void OutRightMouseState()
{
inRightMouse = false;
}
private void RightMouseControllerUpdate() {
if (Input.GetMouseButton(1)&&inRightMouse)
{
Vector3 offset = Input.mousePosition - lastPos;
float xr = offset.x * 0.15f;
float yr = offset.y * -0.15f;
Vector3 rotate = this.transform.localEulerAngles;
rotate = rotate.SetY(rotate.y + xr).SetX(rotate.x + yr);
if (rotate.x < 180 && rotate.x > yLimit.y)
rotate.x = yLimit.y;
if (rotate.x > 180 && rotate.x < yLimit.x + 360)
rotate.x = yLimit.x + 360;
this.transform.localEulerAngles = rotate;
lastPos = Input.mousePosition;
}
}
private void ScrollUpdate()
{
if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
if (curntScrollValue > scrollLimit.y)
return;
curntScrollValue++;
if (mainCam.fieldOfView<=100)
{
mainCam.fieldOfView += 15;
}
if (mainCam.orthographicSize <= 15)
{
mainCam.orthographicSize += 0.5f;
}
}
if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
if (curntScrollValue < scrollLimit.x)
return;
curntScrollValue--;
if (mainCam.fieldOfView > 15)
{
mainCam.fieldOfView -= 15;
}
if (mainCam.orthographicSize >= 1)
{
mainCam.orthographicSize -= 0.5f;
}
}
}
private void Update()
{
RightMouthButtonCheckUpdeate();
RightMouseControllerUpdate();
ScrollUpdate();
}
}
主要是通过fieldwithview来控制范围,然后也可以用orthographicsize来改变视野,很好用,第一次写,作为未毕业的学生,我还有很多要学的地方,加油。