I am trying to rotate one of a few 3d models by click and dragging the mouse what code would that be? or how would I be able to do that?

Hello, I am trying to click one of the 6 layers and drag it for a puzzle that I am making. how would I do that?

I found code to move it around. I found this by https://www.patreon.com/posts/unity-3d-drag-22917454 or Jayanam Games if this is easier how should I edit this code + what should I do with this? (like just drag and drop or do I need to do more?) (sorry I am new to this.)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DragObject : MonoBehaviour


private Vector3 mOffset;

private float mZCoord;

void OnMouseDown()


    mZCoord = Camera.main.WorldToScreenPoint(

    mOffset = gameObject.transform.position - GetMouseAsWorldPoint();


private Vector3 GetMouseAsWorldPoint()


    Vector3 mousePoint = Input.mousePosition;

    mousePoint.z = mZCoord;

    return Camera.main.ScreenToWorldPoint(mousePoint);


void OnMouseDrag()


    transform.position = GetMouseAsWorldPoint() + mOffset;



I would not recommend trying too hard to cast your mouse position into the world.

My best advice would be this:

On the OnMouseDown event, use a raycast to find which layer you want to rotate. Hide the cursor, and highlight the layer (by changing its color for example).

On the OnMouseDrag event, do this

target.transform.rotation = target.transform.rotation * Quaternion.AngleAxis(mouseDelta.x * rotSpeed, Vector3.up);

On the OnMouseUp event, show the cursor and remove the highlight

You will need to calculate mouseDelta yourself.