Вместо того, чтобы писать весь код для вас, я дам вам несколько советов, которые могут помочь вам изменить его (я думаю, это лучший способ обучения).
Во-первых, когда вы создаете позицию ввызов randomPointSqaure
, сохраните точку, созданную как переменную экземпляра.
theLocation = [self randomPointSquare];
Затем установите расположение imageView таким:
[imageView setCenter:theLocation];
Рассчитайте, как далеко находится объектот точки, которую вы хотите, чтобы это было (240, 160) и разделите это на количество времени, которое вы хотите, чтобы он переместился.Например, если ваше местоположение (0, 160), то оно будет путешествовать 240 пикселей.Если вы хотите более 10 секунд, это будет 24 пикселей в секунду.Сохраните это в переменной экземпляра как «delta»
. Теперь создайте таймер, который вызывает метод для обновления позиции
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(updatePosition) userInfo:nil repeats:YES];
, а затем создайте метод updatePosition
- (void)updatePosition {
...
// Calculate the new position
// delta is divided by 100 as the timer runs every 0.01 second
// and delta was calculated previously as being distance per second
theLocation = theLocation + (delta / 100);
...
[imageView setCenter:theLocation];
// Check if the location is at the "collision point" and do whatever if it is
if (theLocation.x == 240 && theLocation.y == 160) {
// We've hit the "collision point"
}
}
Надеемся, это даст вам некоторые идеи о том, как вы можете сделать это с помощью таймера вместо анимации.Вот как игра будет выполнять то же самое - вы просто обновляете позиции объектов маленькими маленькими шагами, а затем каждый раз проверяете наличие столкновений и т. Д.