Rotate Rigidbody2D by Touch
Hello guys, i have a gamblingwheel and i want that the player can rotate it via touch input. Also I want that the wheel continues spinning if the player takes the finger of the display. If the gamblingwheel reach a surtent speed I want to start an animtion.
I tried it very often but i havn't found a solution for this problem :/
If anyone of you now how I can realize this project. I would be very happy if you could answer me. Thank you !
This is what i got so far:
public void GamblingWheelVelocityUpdate() //This function is called in the Update() methode
{
if (Input.GetTouches().Count == 1)
{
Touch t = Input.GetTouches()[0];
Ray ray = Camera.main.ScreenPointToRay(t.position);
RaycastHit2D hit = Physics2D.Raycast(ray.origin, Vector3.forward);
if (hit.collider != null)
{
if(t.phase == TouchPhase.Began) { }
if(t.phase == TouchPhase.Moved)
{
//Placeholder for the script.
//The gamblingwheel variable is called: (rigidbody2D)gamblingWheel.
}
}
}
}
Answer by KwahuNashoba · Oct 12, 2015 at 05:08 PM
You are on the right way although I'm not quite sure what you want to do. Try something like this(this is more a pseudocode so don't just copy/paste it :)):
if(t.phase == TouchPhase.Began)
{
touchBegin = t.position;
}
if(t.phase == TouchPhase.Moved)
{
float touchDelta = (t.position - touchBegin).magnitude;
gamblingWheel.AddTorque(touchDelta * Time.deltaTime):
}
This will add rotatin force to your object. Of course, this will rotate it in same direction no matter of how you swiped, to change spinning direction you'll have to do additional math
Your answer
Follow this Question
Related Questions
Why is a gameobject moves at start? 0 Answers
How to make GameObject follow with finger without delay? 0 Answers
How do I make a 2D spaceship rotate to my mouse? 0 Answers
Inconsistent Velocity? 0 Answers
Check rotation of an obstacle 0 Answers