vikas singh
vikas singh

Reputation: 1

Unity 3D Ball Follow the finger

I am trying to create a 3d game like ketchapp ball race, in which the cube slides along a road, and the left right movement is controlled using touch

The problem I am facing is that the touch senstivity seems to react different on different devices, due to which I am not able to calculate the left-right displacement for all devices. This is how I am calculating the left-right displacement of the cube:

     Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition ;
     transform.Translate(touchDeltaPosition.x * .1f * Time.deltaTime, 0, 0);

However this is not working properly all device . Any help will be highly appreciated

Upvotes: 0

Views: 867

Answers (2)

Brian T.
Brian T.

Reputation: 66

See this answer: https://stackoverflow.com/a/25740565/10063126

Basically, ScreenToWorldPoint was used.
World position is computed; not screen touch position.

But you have to manually solve for delta position.

Example:

Vector3 currPos  = Input.mousePosition;
Vector3 startPos = Camera.main.ScreenToWorldPoint(currPos);
Vector3 endPos   = Camera.main.ScreenToWorldPoint(prevPos);

Vector3 deltaPos = endPos - startPos;
transform.Translate(deltaPos.x * sensitivity * Time.deltaTime, 0, 0);    

prevPos = currPos;

Upvotes: 3

Çağatay IŞIK
Çağatay IŞIK

Reputation: 957

How about using 2 buttons on your screen one for left control and one for right control and then when the left button is pressed you can give a value to go left and same for right button. This way your ball's movement will be independent from the touched position's X value.

Upvotes: 0

Related Questions