- Home /
Unity mobile delta position not working as expected
Hey Guys,
I want that a certain action triggers when I dragged my finger across 10% of the screen's width. So what I do is like 0.1*Screen.Width and cumulate the position via the first touch like, Input.GetTouch(0).deltaPosition. And when my delaPosition.x > Screen.Width*0.1, I trigger my thing. But it seems like it take about 45-50% of the screen to get to actually 10% of the screen's width. Any ideas ?
// Touch Screen (mobile) support
if (Input.touchCount > 0)
{
var touch = Input.GetTouch (0);
mCumulatedDelta += touch.deltaPosition;
Debug.Log("INCREMENT : "+mCumulatedDelta);
}
else
{
Debug.Log("RESET");
mCumulatedDelta = Vector2.zero;
}
if (mCumulatedDelta.y < mMaxTolerableYDeviation)
{
if (mCumulatedDelta.x >= mMinRequiredXDeviation)
{
Debug.Log("CUMULATED DELTA : "+mCumulatedDelta);
if (OnSwipeRight != null)
OnSwipeRight(mCumulatedDelta.x);
mCumulatedDelta = Vector2.zero;
mLastMousePosition = Vector2.zero;
mReadMouse = false;
}
else if (mCumulatedDelta.x <= -mMinRequiredXDeviation)
{
Debug.Log("CUMULATED DELTA : "+mCumulatedDelta);
if (OnSwipeLeft != null)
OnSwipeLeft(mCumulatedDelta.x);
mCumulatedDelta = Vector2.zero;
mLastMousePosition = Vector2.zero;
mReadMouse = false;
}
}
Thanks a lot.
I think, in your case better use two position of touch: when began and when move events. And calculate your delta as division this two position.
Your answer
Follow this Question
Related Questions
Object is passing from colliders when swipe with rigidbody.position 1 Answer
How can i use single swipe to run a character continuously. 0 Answers
Locking movement until character collides with walls, and moving character using a phone swipe. 0 Answers
Unity swipe controlls mobile 0 Answers
How to flick an object away with a swipe 0 Answers