- Home /
how to move the camera using the mouse scroll in all direction?
Hi Every One,
I am trying to do move the camera in the scene using the mouse scroll instead of the keyboard. I am using the MouseLook.cs unity default Script to rotate the object and i wrote the scrolling code in that its working, but it is moving the only one direction, it is taking the world position and moving even if i change the locval position it snot moving the direction.
i have attached the script below please check and tell me my bugs,
using UnityEngine;
using System.Collections;
/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation
/// To make an FPS style character:
/// - Create a capsule.
/// - Add the MouseLook script to the capsule.
/// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSInputController script to the capsule
/// -> A CharacterMotor and a CharacterController component will be automatically added.
/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook script to the camera.
/// -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.)
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLook : MonoBehaviour {
public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;
private float forw;
private Vector3 position;
void Update ()
{
if(!CameraControl.uienable)
{
if(Input.GetMouseButton(0))
{
if (axes == RotationAxes.MouseXAndY)
{
float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
}
else if (axes == RotationAxes.MouseX)
{
transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
}
else
{
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
}
}
// forw -= Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * 20;
//
// position = new Vector3(forw, transform.position.y, forw);
//
// transform.localPosition = position;
}
}
void Start ()
{
forw = transform.position.z;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
}
This is my code.
Thanks.
by all direction do you mean in left and right or up and down.And if you mean all it's impossible cause you can only scroll mouse up or down so there is no left and right scrolling.
Your answer
![](https://koobas.hobune.stream/wayback/20220613152158im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Move an object toward an angle in 2d space 0 Answers
Transform.LookAt - wrong vector 4 Answers
C# locking Main Camera's Rotations 1 Answer
Camera, Offsetting the Transform.LookAt 2 Answers
Pan Orthographic Camera 0 Answers