How to link object.rotations to mouse.movements?

Hi guys, here u are my goal:

alt text

I have this cannon and I want to control its rotation on x axis moving the mouse up & down.
But since I can’t do that I decide to post here.

I am actually using a script that control the movement (with rotation limits processed by clamp method) pressing up arrow and down arrow.

But I would like to add the mouse function too.

Which is the best way?

Please answer in C# and if possible be clearer as u can because I am a true beginner. :frowning:

If can help, the script I am using to rotate with arrows and limit the rotation of the cannon is the follow:

    using UnityEngine;
    using System.Collections;
     
    public class ClampingRotation : MonoBehaviour
    {
    public float ySpeed = 250.0f;
     
    public float yMinLimit = -80f;
    public float yMaxLimit = 80f;
     
    private float x = 0.0f;
    private float y = 0.0f;
    private float z = 0.0f;
     
    void Start()
    {
    x = transform.eulerAngles.x;
    y = transform.eulerAngles.y;
    z = transform.eulerAngles.z;
    }
     
    void Update()
    {
    if ( Input.GetKey(KeyCode.UpArrow) )
    {
    y += ySpeed * Time.deltaTime;
    }
     
    if ( Input.GetKey(KeyCode.DownArrow) )
    {
    y -= ySpeed * Time.deltaTime;
    }
     
    y = ClampAngle( y, yMinLimit, yMaxLimit );
     
    Quaternion newRot = Quaternion.Euler( x, y, z );
     
    transform.rotation = newRot;
    }
     
    float ClampAngle( float angle, float min, float max )
    {
    if ( angle < -360 )
    angle += 360;
    if ( angle > 360 )
    angle -= 360;
     
    return Mathf.Clamp( angle, min, max );
    }
    }

best regards to you all guys and I hope to hear from you soon!

Bye

Matthew

Agreed. Change your arrow input to :

y += Input.GetAxis( "Mouse Y" ) * ySpeed * Time.deltaTime;