private Transform mCameraTrans;//照相机
private Ray mRay;//射线
private Vector3 mCameraDir;//临时的方向向量
private Vector3 restCamer;//重置相机的位置
private float moveDelta;//鼠标滚轮值
private float hisMoveDelta;//鼠标滚轮的变化总值
public float mSpeed = 2f;//移动的速度
public float min = 0f;//下限
public float max = 0.8f;//上限
void Start()
{
mCameraTrans = Camera.main.transform;//拿到当前的照相机
mCameraDir = mCameraTrans.position;//记录当前照相机的位置
restCamer = mCameraTrans.position;//记录照相机的初始位置
}
void Update()
{
mRay = Camera.main.ScreenPointToRay(Input.mousePosition);//照相机的位置往鼠标的位置发射一条射线
moveDelta = Input.GetAxis("Mouse ScrollWheel");//获取鼠标滚轮的值
hisMoveDelta += moveDelta;
if (hisMoveDelta > max)
{
hisMoveDelta = max;
moveDelta = 0;
}
if (hisMoveDelta <= min)
{
hisMoveDelta = min;
moveDelta = 0;
mCameraTrans.position = restCamer;
mCameraDir = restCamer;
}
mCameraDir += (mRay.direction * moveDelta * mSpeed);//计算照相机当前帧的位置
mCameraTrans.position = mCameraDir;//更新照相机的位置
}