Я работаю над простой игрой, где «частицы» привлекают прикосновения пользователя.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *touch = [touches allObjects];
for (numberOfTouches = 0; numberOfTouches < [touch count]; numberOfTouches++) {
lastTouches[numberOfTouches] = [((UITouch *)[touch objectAtIndex:numberOfTouches]) locationInView:self];
}
isTouching = YES;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *touch = [touches allObjects];
for (numberOfTouches = 0; numberOfTouches < [touch count]; numberOfTouches++) {
lastTouches[numberOfTouches] = [((UITouch *)[touch objectAtIndex:numberOfTouches]) locationInView:self];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *touch = [touches allObjects];
for (numberOfTouches = 0; numberOfTouches < [touch count]; numberOfTouches++) {
lastTouches[numberOfTouches] = [((UITouch *)[touch objectAtIndex:numberOfTouches]) locationInView:self];
}
if (!stickyFingers) {
isTouching = NO;
}
}
lastTouches
- это массив CGPoint
с, который используется другой частью программы для перемещения частиц.
Проблема, с которой я сталкиваюсь, заключается в том, что, как я сейчас ее настроил, всякий раз, когда вызывается любая из 3 функций, они перезаписывают массив CGPoints и numberOfTouches.Я не думал, что это будет проблемой, но оказывается, что TouchesMoved получает только те касания, которые изменились, и не получает те, которые остались прежними.В результате, если вы двигаете одним пальцем, а не другим, программа забывает о пальце, который не движется, и все частицы движутся в направлении движущегося пальца.Если вы перемещаете оба пальца, частицы перемещаются между двумя пальцами, как они должны.
Мне нужно как-то удержать прикосновения, которые не двигались, при обновлении тех, которые были.
Есть предложения?