- Home /
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(
gameObject.transform.position).z;
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;
}
}
Add 4 spaces to every line of code to make sure the whole code block is shown correctly on your question
Answer by lgarczyn · Oct 04, 2019 at 08:15 PM
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.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
OnCollisionExit() too slow 1 Answer
Target Wheel Rotation/Physics 0 Answers
Make object pass through one object and bounce from another 2 Answers
Need help with wall cover system(splinter cell like) 0 Answers