- Home /
Just wondering if anyone can help me work out why this script doesn't zoom my camera in using the scrollwheel?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class CameraManager : MonoBehaviour {
public float zoomMax = -17;
public float zoomMin = -3;
public float zoomSpeed = 0.5f;
public float zoomCam = 10f;
public float horizontalSpeed = 40;
public float verticalSpeed = 40;
public float camRotateSpeed = 80;
public float camDistance = 30;
public float curDistance;
// Update is called once per frame
void Update () {
float horizontal = Input.GetAxis("Horizontal")*horizontalSpeed * Time.deltaTime;
float vertical = Input.GetAxis("Vertical") * verticalSpeed * Time.deltaTime;
float Rotation = Input.GetAxis("Rotation");
// Vector3 camDefaultPos;
transform.Translate(Vector3.forward * vertical);
transform.Translate(Vector3.right * horizontal);
// camDefaultPos = transform.position;
zoomCam += Input.GetAxis("Mouse ScrollWheel") * zoomSpeed;
zoomCam = Mathf.Clamp(zoomCam, zoomMin, zoomMax);
// Bit that rotates the camera.
if (Rotation != 0)
{
transform.Rotate(Vector3.up, Rotation * camRotateSpeed * Time.deltaTime, Space.Self);
}
}
}
Answer by MarshallN · Apr 04, 2017 at 04:34 PM
You're setting the zoomCam variable and clamping it, but never using it. You need to set the distance between the camera and the object it's looking at to zoomCam after clamping it. You can do that by finding the vector from the object to the camera, using Vector3.Normalize() on it, then setting the camera's position to the object's position + that vector * zoomCam.
Awesome thanks! How would i then set a max and $$anonymous$$imum height for the zoom?
Your zoom$$anonymous$$in and zoom$$anonymous$$ax variables are already clamping the zoom distance. If you're looking to clamp height specifically, you'll want take the final vector (object's position + (normalized vector from object to camera) * zoomCam) I described above, set its y value to y$$anonymous$$in if it's below it and y$$anonymous$$ax if it's above it, and assign it to the camera's position after you've done that.
Your answer
Follow this Question
Related Questions
RTS Camera - Zoom is not uniform, yet code is? 2 Answers
Drag to make box in RTS? 3 Answers
can someone help me with my hud? 1 Answer
Click and Drag RTS Mouse selecting script help. 1 Answer
RTS Grid Idea? 1 Answer