Я делаю гоночную игру для iOS, где автомобиль (UIView) помещается поверх google maps ios api. У меня возникают проблемы с обнаружением столкновений с автомобилем и серыми зданиями, которые появляются на карте.
Я пытался сделать это по цвету пикселя, то есть проверял, является ли цвет пикселя прямо перед автомобилем цветом крыши здания (серый). Прямого доступа к цвету пикселя iPhone нет, поэтому я использую метод скриншотов Google Maps, чтобы получить изображение и получить от него цвет пикселя. Проблема в том, что я могу сделать снимок только того экрана, который только что покинул. Я использую mapImage = [GMSScreenshot screenshotOfMainScreen];
. Я также пытался получить окно и экран и вызвать mapImage = [GMSScreenshot screenshotOfScreen:topWindow.screen];
Оба имеют тот же эффект.
Каково решение этой проблемы? Можете ли вы придумать лучший способ обработки столкновений в этой ситуации? Есть ли у обратного геокодирования возможность определять вершины зданий по сравнению с улицами? Спасибо за любую помощь!
РЕДАКТИРОВАТЬ: Изображения: Интерфейсный конструктор: Слева — главное меню, справа — игра. Представление изображения пользовательского интерфейса в верхнем левом углу установлено как текущее изображение снимка экрана для справочных целей. Вот как я знал, что это было выключено
Игровой процесс. Как видите, он представляет только предыдущее меню.
Моя функция viewdidLoad: не более того, что связано с получением изображения.
- (void)viewDidLoad
{
[super viewDidLoad];
cameraPosition = CLLocationCoordinate2DMake(42.271291, -83.729918);
moveDistance = .00055;
cA = [UIColor colorWithRed:.937255 green:.921569 blue:.886275 alpha:1];
camera = [GMSCameraPosition cameraWithLatitude:cameraPosition.latitude
longitude:cameraPosition.longitude
zoom:19
bearing:0
viewingAngle:0];
mapView_ = [GMSMapView mapWithFrame:CGRectMake(0, 0, 480, 300) camera:camera];
mapView_.myLocationEnabled = NO;
[self.view addSubview:mapView_];
car_ = [[Car alloc] initWithFrame:CGRectMake(240, 150, 13, 29) withImage:[UIImage imageNamed:@"carA-01.png"]];
[self.view addSubview:car_];
[self.view addSubview:controllerView];
updateClock = [NSTimer scheduledTimerWithTimeInterval:(1/20)
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
crashClock = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(checkCrash)
userInfo:nil
repeats:YES];
UIWindow *topWindow = [[UIApplication sharedApplication].windows objectAtIndex:0];
mapImage = [GMSScreenshot screenshotOfScreen:topWindow.screen];
// mapImage = [GMSScreenshot screenshotOfMainScreen];
}