I'm making two games and for both I want to know how I can find an angle from a swipe. I've heard you use UIPanGesutre
but I don't know how to use it. Any help?
Asked
Active
Viewed 173 times
0

sangony
- 11,636
- 4
- 39
- 55

Young_Programmer
- 9
- 4
2 Answers
0
You can detect the start and stop location coordinates of the touch and calculate the angle with the two points.

sangony
- 11,636
- 4
- 39
- 55
-
How would I calculate the angle? – Young_Programmer Mar 11 '15 at 00:18
-
@Young_Programmer - http://stackoverflow.com/questions/7586063/how-to-calculate-the-angle-between-a-line-and-the-horizontal-axis – sangony Mar 11 '15 at 01:36
0
Within the touchesBegan
event, determine the touch location:
Create an instance variable called initialLocation
of type CGPoint
in your interface
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//Determine touch location and store in instance variable (so you can use it again in touchesEnded)
UITouch *touch = [touches anyObject];
initialLocation = [touch locationInNode:self];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
//Determine touch location
UITouch *touch = [touches anyObject];
CGPoint finalLocation = [touch locationInNode:self];
//Find change in x and y between the touches
CGFloat changeX = finalLocation.x - initialLocation.x;
CGFloat changeY = finalLocation.y - initialLocation.y;
//Use trig to find angle (note this angle is in radians)
float radians = atan(changeY/changeX);
//Convert to degrees
float degrees = 360 * radians/(2 * M_PI);
//*Note* you would have to alter this part depending on where you are measuring your angle from (I am using the standard counterclockwise from right)
//This step is due to the limitation of the atan function
float angle;
if (changeX > 0 && changeY > 0){
angle = degrees;
}
else if (changeX < 0 && changeY > 0){
angle = 180 + degrees;
}
else if (changeX < 0 && changeY < 0){
angle = 180 + degrees;
}
else{
angle = 360 + degrees;
}
NSLog(@"Now: %f",angle);
//^^^ HERE IS THE ANGLE! ^^^
}
I hope this helps!

Luigi Mangione
- 33
- 6
-
It kinda worked. When I was swiping to the right, sometimes it said 360 degrees, and sometimes it said about 0. – Young_Programmer Mar 13 '15 at 00:01
-
Actually, when I swiped on the top half it printed 0, but the bottom half printed around 360 – Young_Programmer Mar 13 '15 at 00:02
-
Yea, that makes sense. This image explains the angles in calculus if you are unfamiliar with it: http://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Polar_graph_paper.svg/2000px-Polar_graph_paper.svg.png – Luigi Mangione Mar 14 '15 at 00:58