- Home /
mouse drag not working!!
Hi guys , I am doing some simple UI transaction in unity what I am trying to do is when I drag the mouse to right it moves the object to certain distance and if I drag the mouse left vice-versa it works fine but its also moving if I move the mouse up and down help me guys thanks in advance.
here's the code:
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening;
public class managerscipt : MonoBehaviour { public RectTransform controllerposition; Vector2 onmouseDownpos; int pos;
// Use this for initialization
void Start () {
pos = 0;
}
// Update is called once per frame
void Update () {
if(Input.GetMouseButtonDown((0)))
{
onmouseDownpos.x = Input.mousePosition.x;
}
if (Input.GetMouseButtonUp((0)))
{
if (Input.mousePosition.x > onmouseDownpos.x && pos >= 2)
{
pos--;
s1();
s2();
s3();
Debug.Log("yu got right");
}
else if (Input.mousePosition.x < onmouseDownpos.x && pos <= 3 )
{
pos++;
s1();
s2();
s3();
s4();
Debug.Log("yu got left");
}
}
}
public void menupage()
{
controllerposition.DOAnchorPos(Vector2.zero, 0.25f);
pos = 1;
}
public void aboutpage()
{
controllerposition.DOAnchorPos(new Vector2(-1196,0) , 0.25f);
pos = 2;
}
public void settingspage()
{
controllerposition.DOAnchorPos(new Vector2(-2311, 0), 0.25f);
pos = 3;
}
public void helppage()
{
controllerposition.DOAnchorPos(new Vector2(-3428, 0), 0.25f);
pos = 4;
}
public void s1()
{
if(pos==1)
controllerposition.DOAnchorPos(Vector2.zero, 0.25f);
}
public void s2()
{
if (pos == 2)
controllerposition.DOAnchorPos(new Vector2(-1196, 0), 0.25f);
}
public void s3()
{
if (pos == 3)
controllerposition.DOAnchorPos(new Vector2(-2311, 0), 0.25f);
}
public void s4()
{
if (pos == 4)
controllerposition.DOAnchorPos(new Vector2(-3428, 0), 0.25f);
}
}
Answer by MadDevil · Jun 07, 2019 at 03:57 AM
private void OnDragEnd(UnityEngine.EventSystems.PointerEventData eventData)
{
Debug.Log("Press position + " + eventData.pressPosition);
Debug.Log("End position + " + eventData.position);
Vector3 directionvector = (eventData.position - eventData.pressPosition).normalized;
Debug.Log("norm + " + directionvector);
DragDirection(directionvector);
}
private void DragDirection(Vector3 dragVector)
{
float positiveX = Mathf.Abs(dragVector.x);
float positiveY = Mathf.Abs(dragVector.y);
if (positiveX > positiveY)
{
if(dragVector.x > 0)
{
Debug.Log("Swipe right");
}
else
{
Debug.Log("Swipe left");
}
}
}
You have to check direction as well when you are checking if the user has swiped left or right. Even when you move your mouse up or down, there is movement in X which you have to consider.
Your answer
Follow this Question
Related Questions
MouseDrag() stops working 1 Answer
Move mechanical arm with mouse 0 Answers
This code only with Right Mouse Drag? 1 Answer
Pulling multiple objects 0 Answers
How to manage multiple objects in a click and drag scrip? 0 Answers