- Home /
 
swipe distance detection dont work
hey! i wanna detect the swipe distance in a 3d world. this is my code so far:
 using UnityEngine;
 using System.Collections;
 
 public class MouseMove2D : MonoBehaviour {
 
     public Vector3 mousePosition;
     private Camera Cam;
     public LayerMask layers;
 
     public bool isSwipe = false;
     public float gestureTime;
     public float gestureDist;
     private TrailRenderer trail;
 
     public Vector3 startPosition;
     public Vector3 currentPosition;
 
     void Start () {
         Cam = Camera.main;
         trail = GetComponent<TrailRenderer>();
     }
 
 
     void Update () {
 
             RaycastHit hit;
             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         if ( Physics.Raycast (ray,out hit,100.0f, layers)) {
 
                 mousePosition = hit.point;
                 transform.position = hit.point;
 
             }
 
         if (Input.GetMouseButtonDown(0)) {
             Debug.Log("GetMouseButtonDown");
 
             gestureDist = 0;
             isSwipe = true;
             trail.enabled = true;
             startPosition = transform.position;
 
         }
 
         if (Input.GetMouseButtonUp(0)) {
             Debug.Log("GetMouseButtonUp");
 
             isSwipe = false;
             trail.enabled = false;
             //startPosition = Vector3.zero;
             gestureTime = 0;
             gestureDist = 0;
 
         }
 
         if (isSwipe){
 
             currentPosition = transform.position;
 
             gestureTime += Time.deltaTime;
             gestureDist = (currentPosition - startPosition).sqrMagnitude;
             //gestureDist = Vector3.Distance (currentPosition, startPosition);
         }
 
     }
 }
 
               so when i am swiping i right at the beginning i think everything is fine, but when i just don't move the mouse/finger and just simply point down, the distance counter goes up and down from 1 to 7 with no clear pattern - anyone a idea what i did wrong?
Answer by avazutaev · Jun 15, 2017 at 05:24 PM
I think, the answer depends on which GameObject your script is attached to, becouse you are using the coordinates of this gameObject:
  startPosition = transform.position;
  //...
  currentPosition = transform.position;
 
              Answer by RobertOne · Jun 16, 2017 at 05:41 AM
Its in a gameobject that gets moved by the current mouse position. So on mouse down i save the start position and on drag the current position. And in between i ask for the distance wich got a bug when i dont drag
Your answer
 
             Follow this Question
Related Questions
Help with swiping for movement 1 Answer
Moving player using cam.ScreenToWorldPoint, with camera smooth following the player 1 Answer
Throw an object via touch/mouse flick 0 Answers
Different resolutions make the swipe of my player go at different speeds on different devices 0 Answers
Drag to move movement like the iPhone messenger game EverWing 1 Answer