Unable to use Swipe and Unity UI together
Hi, I want to use swipe for my Player Rotation its working fine. But at the same time i am using Unity Ui Button for firing bullets. The problem is this, if user presses fire button and swipe with other finger it will work fine. But when user is swipe and presses fire button it doesn't work correctly. Here is my swipe code. Anyone please guide me. using UnityEngine; public class SwipeManager : MonoBehaviour { private Vector3 firstpoint; //change type on Vector3 private Vector3 secondpoint; private Vector2 firstPressPos; private Vector2 secondPressPos; Vector2 currentSwipe; public static SwipeManager swipeDirection; public float minSwipeLength = 5f; private float xAngle = 0.0f; //angle for axes x for rotation private float yAngle = 0.0f; private float xAngTemp = 0.0f; //temp variable for angle private float yAngTemp = 0.0f; bool swipeDetection; void Start() { //Initialization our angles of camera xAngle = 0.0f; yAngle = 0.0f; this.transform.rotation = Quaternion.Euler(yAngle, xAngle, 0.0f); swipeDetection = true; //
Input.multiTouchEnabled = false; } void FixedUpdate() { //Check count touches
if (Input.touches.Length > 0) {
for (int i = 0; i < Input.touches.Length; i++) {
Touch t = Input.GetTouch (i);
if (t.phase == TouchPhase.Began) {
firstPressPos = new Vector2 (t.position.x, t.position.y);
}
if (t.phase == TouchPhase.Ended) {
secondPressPos = new Vector2 (t.position.x, t.position.y);
currentSwipe = new Vector3 (secondPressPos.x - firstPressPos.x, secondPressPos.y - firstPressPos.y);
// Make sure it was a legit swipe, not a tap
if (currentSwipe.magnitude < minSwipeLength) {
//swipeDirection = SwipeManager.None;
return;
} else {
}
}
if (Input.touchCount > 0) {
//Touch began, save position
if (Input.GetTouch (i).phase == TouchPhase.Began) {
firstpoint = Input.GetTouch (i).position;
xAngTemp = xAngle;
yAngTemp = yAngle;
}
//Move finger by screen
if (Input.GetTouch (i).phase == TouchPhase.Moved) {
secondpoint = Input.GetTouch (i).position;
//Mainly, about rotate camera. For example, for Screen.width rotate on 180 degree
xAngle = xAngTemp + (secondpoint.x - firstpoint.x) * 180.0f / Screen.width;
yAngle = yAngTemp - (secondpoint.y - firstpoint.y) * 90.0f / Screen.height;
//Rotate camera
if (yAngle < 0) {
yAngle += 360;
}
if ((yAngle >= 0 && yAngle >= 320 && yAngle <= 360) || (yAngle <= 360 && yAngle <= 20)) {
yAngle = yAngle;
} else {
yAngle = transform.eulerAngles.x;
}
this.transform.rotation = Quaternion.Euler (yAngle, xAngle, 0.0f);
}
}
}
}
} }
Your answer
Follow this Question
Related Questions
Sprite occasionally moving to left when dragging to right 0 Answers
Some things wrong with swipe move! 0 Answers
2D touch - Why is this movement so jittery? 1 Answer
How can i move just one object ? 0 Answers