Мне приходилось делать это вручную 10000 раз, поэтому я написал для нее функцию и вставил ее в свою личную библиотеку, которую я всегда помещаю в начало новой программы, поэтому я забываю, что это не пушка.
- (float)distanceBetween:(CGPoint)p1 and:(CGPoint)p2
{
return sqrt(pow(p2.x-p1.x,2)+pow(p2.y-p1.y,2));
}
так вы называете это так (скажем, вы хотите знать, как далеко вы двигали пальцем):
float moveDistance = [self distanceBetween:touchStart and:touchEnd];
Это полезно в функциях перемещения, а также для выборочной проверки в меню прокрутки:
if([self distanceBetween:touchStart and:touchAt] > 20*scalePoints)
isItATap = FALSE;
Установите «isItATap» в true в touchsBegan, поместите вышеупомянутое в touchsMoved, чтобы вы знали, что игрок слишком сильно сдвинул палец, чтобы касание было «касанием», так что вы можете сделать так, чтобы он НЕ выбирал объект, которого касался игрок вместо этого прокрутите объект вокруг.
Что касается масштаба, то это должно основываться на том, есть ли у вас дисплей сетчатки и какой у вас размер устройства (делите на 2 для дисплея сетчатки, поскольку физическое расстояние в 5 «точек» на обычном экране равно палец пользователя чувствует, что на экране дисплея сетчатки он будет отображаться как 10 «пикселей», поскольку каждая точка имеет 4 пикселя, поэтому вы столкнетесь с ситуацией, когда игроку будет очень трудно постучать по дисплею сетчатки (который общий недосмотр)