Hello, I’m making a RTS game and i created a little line of code to control mouse zoom
here’s the code.
var ROTSpeed = 10f;
function Update()
{
gameObject.transform.Translate(0,0,Input.GetAxis("Mouse ScrollWheel") * ROTSpeed);
}
So that’s My code, it works just fine. Perfectly in fact, but I have one problem i can zoom in and out infinitely. Does anyone know how i could clamp the zoom? Thanks in advance!
Store the amount in a variable, then clamp it.
For example (UnityScript):
var ZoomAmount : float = 0; //With Positive and negative values
var MaxToClamp : float = 10;
var ROTSpeed : float = 10;
function Update() {
ZoomAmount += Input.GetAxis("Mouse ScrollWheel");
ZoomAmount = Mathf.Clamp(ZoomAmount, -MaxToClamp, MaxToClamp);
var translate = Mathf.Min(Mathf.Abs(Input.GetAxis("Mouse ScrollWheel")), MaxToClamp - Mathf.Abs(ZoomAmount));
gameObject.transform.Translate(0,0,translate * ROTSpeed * Mathf.Sign(Input.GetAxis("Mouse ScrollWheel")));
}
Untested.
For those that still need an answer to this, using Mathf Clamp is not the best way. Instead, simply write the following code on Update()
if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
if (mycamera.fieldOfView > 1)
{
mycamera.fieldOfView--;
}
}
if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
if (mycamera.fieldOfView < 100)
{
mycamera.fieldOfView++;
}
}
This only zooms in if the field of view is greater than the minimum (which is 1 for all cameras). The maximum value is greater than 100 but 100 is a good value.
@Filippo94
Ok that script does an excellent job at moving the cam backwards and forward but I have been playing with it for a day now and I cant get it to limit the amount of movement backwards and forward.
Example: forward limit 0.5, backward limit 1
I know a little bit about scripting I just wouldn’t know what to use to accomplish this.
else?, Bool?, <>=?, new float var?
I’m so lost right now.