# Issue rotating objects with input from the mouse wheel

Hey there everyone, first time poster here.

So, I’ve got a c# script that is supposed to get input from the mouse wheel and then use that input to rotate a game object.

I can get input from the mouse wheel no problem, but as soon as I scroll the wheel the game object locks into an upright position and will jiggle around a little bit if I move the mouse wheel, but won’t rotate like it should. Been banging my head all day trying to figure this out, so any assistance with this would be greatly appreciated. The script is pretty short, so I’ll post the thing in its entirety here.

``````using UnityEngine;
using System.Collections;

public class Adjust_Sights : MonoBehaviour {

private float rot;        //stores the rotation of the mouse wheel
private float speed;      //multiplier for the mouse wheel input
private Quaternion storePos; //stores the rotation of the attached gameObject

// Use this for initialization
void Start () {

speed = 10.0f;

}

// Update is called once per frame
void Update () {

rot = Input.GetAxis("Mouse ScrollWheel") * speed * Time.deltaTime;  //gets the mouse wheel input and stores it in ro
storePos = gameObject.transform.rotation;  //keeps storePos up to date

if (rot != 0)
{

transform.eulerAngles = new Vector3(storePos.x, storePos.y, rot); //Doest the actual rotation of the object
}
}
}
``````

First, gameObject.transform.rotation returns a Quaternion (4 parts w, x, y, z). You probably want transform.eulerAngles which is a Vector3 (3 parts x, y, z) for storePos.

Second, you probably don’t want the z rotation to be directly proportional to how much the mousewheel has moved but rather added onto the current z rotation.

Try

`````` using UnityEngine;
using System.Collections;

public class Adjust_Sights : MonoBehaviour {

private float rot;        //stores the rotation of the mouse wheel
private float speed;      //multiplier for the mouse wheel input
private Vector3 storePos; //stores the rotation of the attached gameObject

// Use this for initialization
void Start () {
speed = 10.0f;
storePos = gameObject.transform.eulerAngles;  //keeps storePos up to date
}

// Update is called once per frame
void Update () {

rot = Input.GetAxis("Mouse ScrollWheel") * speed * Time.deltaTime;

if (rot != 0)
{
storePos= new Vector3(storePos.x, storePos.y, storePos.z+rot);
transform.eulerAngles = storePos;
}
}
}
``````