- Home /
Camera Zoom Input change.
Hello
I found this script on the forums, which is just what i need. But i need it to use the mouse scrollwheel. This being in C# i have no idea how to do it. Any help would be appreciated.
using UnityEngine;
using System.Collections;
public class CameraZoom : MonoBehaviour {
public int zoomLevelSelected;
public float altFieldOfView = 60.0f;
public float ZoomLevel = 60.0f;
public float ZoomLevel1 = 40.0f;
public float ZoomLevel2 = 20.0f;
// Use this for initialization
void Start () {
zoomLevelSelected = 0;
}
// Update is called once per frame
void Update () {
if(Input.GetMouseButtonDown(1) || Input.GetKeyDown(KeyCode.Plus) || Input.GetKeyDown(KeyCode.Minus))
{
if(Input.GetKeyDown(KeyCode.Minus))
zoomLevelSelected -= 1;
else
zoomLevelSelected += 1;
float temp = camera.fieldOfView;
if(zoomLevelSelected > 2)
{
zoomLevelSelected = 0;
}
switch(zoomLevelSelected)
{
case 0:
camera.fieldOfView = ZoomLevel;
ZoomLevel = temp;
print (zoomLevelSelected);
break;
case 1:
camera.fieldOfView = ZoomLevel1;
ZoomLevel1 = temp;
print (zoomLevelSelected);
break;
case 2:
camera.fieldOfView = ZoomLevel2;
ZoomLevel2 = temp;
print (zoomLevelSelected);
break;
}
}
}
}
Answer by ScroodgeM · Jul 30, 2012 at 08:23 PM
using UnityEngine; using System.Collections; public class CameraZoom : MonoBehaviour { public int zoomLevelSelected; public float altFieldOfView = 60.0f; public float ZoomLevel = 60.0f; public float ZoomLevel1 = 40.0f; public float ZoomLevel2 = 20.0f; // Use this for initialization void Start() { zoomLevelSelected = 0; }
// Update is called once per frame
void Update()
{
int zoomChange = 0;
if (Input.GetAxis("Mouse ScrollWheel") < 0) { zoomChange = +1; } // back
else if (Input.GetAxis("Mouse ScrollWheel") > 0) { zoomChange = -1; } // forward
if (zoomChange!=0)
{
zoomLevelSelected = Mathf.Clamp(zoomLevelSelected + zoomChange, 0, 2);
float temp = camera.fieldOfView;
switch (zoomLevelSelected)
{
case 0:
camera.fieldOfView = ZoomLevel;
ZoomLevel = temp;
print(zoomLevelSelected);
break;
case 1:
camera.fieldOfView = ZoomLevel1;
ZoomLevel1 = temp;
print(zoomLevelSelected);
break;
case 2:
camera.fieldOfView = ZoomLevel2;
ZoomLevel2 = temp;
print(zoomLevelSelected);
break;
}
}
}
}
bonus: i like this one much ore 8) (just little improvements)
using UnityEngine; using System.Collections; public class CameraZoom : MonoBehaviour { public int zoomLevelSelected = 0; public float[] ZoomLevels = new float[] { 60, 40, 20 }; void Update() { int zoomChange = 0; if (Input.GetAxis("Mouse ScrollWheel") < 0) { zoomChange = +1; } // back else if (Input.GetAxis("Mouse ScrollWheel") > 0) { zoomChange = -1; } // forward if (zoomChange != 0) { zoomLevelSelected = Mathf.Clamp(zoomLevelSelected + zoomChange, 0, ZoomLevels.Length - 1); camera.fieldOfView = ZoomLevels[zoomLevelSelected]; } } }
Your answer
Follow this Question
Related Questions
Scoping script /Camera zoom preferably C# 3 Answers
Need to limit zoom in/out of camera script 4 Answers
How to move camera on local z axis 2 Answers
Save picture from camera with zoom 0 Answers
How to add Pinch to Zoom? 0 Answers