Sprite occasionally moving to left when dragging to right
Below is the code that I use to drag my sprite along the x-axis. Occasionally the sprite just quickly moves to the left end when I am moving it right. I would like to know what is causing the inconsistent behaviour in dragging the sprite. Please see the code:
public class dragSprite : MonoBehaviour {
Vector3 startPosition;
Transform cachedTransform;
float horizontalLimit = 2.5f, dragSpeed = 0.01f;
void Start () {
startPosition = camera.ScreenToWorldPoint(new Vector3(Screen.width/2, Screen.Height/2, camera.nearClipPlane));
transform.position = startPosition;
cachedTransform = transform;
}
void Update () {
if (Input.touchCount > 0) {
Vector2 deltaPosition = Input.GetTouch(0).deltaPosition;
switch(Input.GetTouch(0).phase) {
case TouchPhase.Began:
break;
case TouchPhase.Moved:
drag(deltaPosition);
Debug.Log("touchPhase moved");
break;
case TouchPhase.Ended:
break;
}
}
}
void drag(Vector2 deltaPosition) {
cachedTransform.position = new Vector3 (
Mathf.Clamp ((deltaPosition.x * dragSpeed) + cachedTransform.position.x, startPosition.x - horizontalLimit, startPosition.x + horizontalLimit),
startPosition.y,
cachedTransform.position.z);
}
}
Hmmm... the code looks reasonable. $$anonymous$$aybe try logging the deltaPosition variable to see if you're getting erroneous values?
Also, if you're using touch controls, make sure another finger isn't touching the edge of the screen. Unity could see that as a big move from the original position.
Your answer
Follow this Question
Related Questions
Unable to use Swipe and Unity UI together 0 Answers
Best tool to do swipe/touch control of multiple objects in one scene 0 Answers
How can I determine the speed of my touch movements? 0 Answers
Touch once to activate and touch again to deactivate gameObject using Renderer 1 Answer
Touch in Phase ended 1 Answer