- Home /
Rotating a gameobject via dragging finger
Hello, I'm quite new to Unity, and I'm making a 3d puzzle game for iOS. Right now I'm creating a menu gui where a cube in the center of the camera is rotating(slowly on it's own), and you simply drag your finger left or right to rotate it more in either direction. The gui elements will be on each side of the cube, and thats why it has to rotate.
It should be pretty simple, I want it to:
start off by slowly rotating right
if dragging finger left or right change direction and increase rotation speed depending on how fast you drag your finger
slowly decrease in speed back to normal
I know how to rotate a cube, but I don't know how to detect whether a finger is dragging to the right or left, and how to change the rotation speed based off of that.
Thank you in advance!
Answer by RyanZimmerman87 · Sep 24, 2013 at 09:57 PM
I've never tried to do this myself, but I can take a guess at it. Maybe try something like this:
Vector2 firstScreenPosition;
Vector2 secondScreenPosition;
bool fingerDownBool;
void Start()
{
fingerDownBool = false;
}
void Update()
{
if (Input.GetButtonDown ("Fire1"))
{
if (fingerDownBool == false)
{
fingerDownBool = true;
//this part I'm guessing on if it works for your specific example since haven't tried it
firstScreenPosition = mainCam.WorldToScreenPoint(Input.mousePosition);
}
//probably want a better way to detect if finger is up this might require 2 clicks to start moving
//could try GetButtonUp() for example
else if (fingerDownBool == true)
{
fingerDownBool = false;
}
}
if (fingerDownBool == true)
{
secondScreenPosition = mainCam.WorldToScreenPoint(Input.mousePosition);
if (secondScreenPosition.x >= firstScreenPosition.x)
{
float newScreenPosition = secondScreenPosition.x - firstScreenPosition.x;
//probably want to use a Slerp or some other function for smooth rotation but you get the idea
transform.RotateAround (transform.position, transform.up, newScreenPosition);
}
//etc
else if (secondScreenPosition.x <= firstScreenPosition.x)
{
}
//grab current position for next Update()comparison
firstScreenPosition = mainCam.WorldToScreenPoint(Input.mousePosition);
}
Hopefully that get's you started that is a complete guess since I never tried it, but maybe get you on the right track I hope.
Your answer
Follow this Question
Related Questions
Rotate on drag for IOS? 1 Answer
Help With Touch to Drag Script 1 Answer
How Can I Drag the Object With Touch ? (Mobile) 4 Answers
Unity2D iOS Dragable items by touch 0 Answers
Rotate model with ARKit 0 Answers