- Home /
sniper mouse sensitivity problem
i have a sniper and it zooms in, except im using the fps controller thing that came with unity and its in C#, and i dont know any C#. when i zoom in heaps moving the mouse 1 pixel across the screen will move the camera heaps so i cant aim at anything right. i want the sensitivity to go down to 1.5 when the right mouse button is down and go back to 15 when it is up, doesn anyone know how to do that?
this is the script if you dont have it for some reason
using UnityEngine;
using System.Collections;
/// $$anonymous$$ouseLook rotates the transform based on the mouse delta.
/// $$anonymous$$inimum and $$anonymous$$aximum values can be used to constrain the possible rotation
/// To make an FPS style character:
/// - Create a capsule.
/// - Add the $$anonymous$$ouseLook 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 Character$$anonymous$$otor and a CharacterController component will be automatically added.
/// - Create a camera. $$anonymous$$ake the camera a child of the capsule. Reset it's transform.
/// - Add a $$anonymous$$ouseLook 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.)
[AddComponent$$anonymous$$enu("Camera-Control/$$anonymous$$ouse Look")]
public class $$anonymous$$ouseLook : $$anonymous$$onoBehaviour {
public enum RotationAxes { $$anonymous$$ouseXAndY = 0, $$anonymous$$ouseX = 1, $$anonymous$$ouseY = 2 }
public RotationAxes axes = RotationAxes.$$anonymous$$ouseXAndY;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float $$anonymous$$imumX = -360F;
public float maximumX = 360F;
public float $$anonymous$$imumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;
void Update ()
{
if (axes == RotationAxes.$$anonymous$$ouseXAndY)
{
float rotationX = transform.localEulerAngles.y + Input.GetAxis("$$anonymous$$ouse X") * sensitivityX;
rotationY += Input.GetAxis("$$anonymous$$ouse Y") * sensitivityY;
rotationY = $$anonymous$$athf.Clamp (rotationY, $$anonymous$$imumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
}
else if (axes == RotationAxes.$$anonymous$$ouseX)
{
transform.Rotate(0, Input.GetAxis("$$anonymous$$ouse X") * sensitivityX, 0);
}
else
{
rotationY += Input.GetAxis("$$anonymous$$ouse Y") * sensitivityY;
rotationY = $$anonymous$$athf.Clamp (rotationY, $$anonymous$$imumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
}
}
void Start ()
{
// $$anonymous$$ake the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
}
That is what I did as well. I really prefer JavaScript over C#, but I slowly learned C# and it has helped me a ton!
Answer by syclamoth · Nov 09, 2011 at 05:32 AM
You see those two values sensitivityX and sensitivityY? Make them go waaay down when you zoom in. Then put them back up again when you zoom out again!
From another C# script:
MouseLook fpLook = Camera.main.GetComponent<MouseLook>();
fpLook.sensitivityX = 0.5f;
fpLook.sensitivityY = 0.5f;
yes i know to do that but i dont know C# so i dont know how
Your answer
Follow this Question
Related Questions
Sniper Zoom Problem 1 Answer
How to zoom in at a good pace? 1 Answer
How to change the sensitivity on right click (when zoomed in) 2 Answers
Sniper zoom 1 Answer
Sniper Scope? 1 Answer