Хорошо, поэтому я решил эту проблему, создав 2d массив CGPoint
с именем touchLocations
и другой массив CGPoint
с именем touchVelocities
. В цикле l oop для всех касаний я добавил
if !touchLocations.indices.contains(touchNumber) {
touchLocations.append([CGPoint]())
}
touchLocations[touchNumber].append(sender.location(ofTouch: touchNumber, in: view))
, чтобы назначить новый CGPoint
для каждого касания (touchNumber
- индекс касания, а sender
- это распознаватель жестов).
Затем я добавил
touchLocations[touchNumber] = touchLocations[touchNumber].suffix(2)
, чтобы массив содержал только последние 2 элемента.
Чтобы получить скорость, я просто сделал
touchVelocities.insert(CGPoint(x: touchLocations[touchNumber].last!.x - touchLocations[touchNumber].first!.x, y: touchLocations[touchNumber].last!.y - touchLocations[touchNumber].first!.y), at: touchNumber)
(вычитал первое значение x из второго значения x для скорости x и делал то же самое для скорости y)
Я знаю, что этот метод не очень точен, однако он был достаточно для моих целей.