我正在为 iOS 制作一个驾驶游戏,其中一辆汽车(UIView)被放在谷歌地图 ios api 的顶部。我无法检测与地图上出现的汽车和灰色建筑物的碰撞。
我一直在尝试通过像素颜色来做到这一点,即检查汽车前面的像素颜色是否是建筑物屋顶的颜色(灰色)。无法直接访问 iPhone 的像素颜色,所以我使用谷歌地图截图方法来获取图像并从中获取像素颜色。问题是,我只能截取刚刚离开的屏幕。我正在使用
mapImage = [GMSScreenshot screenshotOfMainScreen];
. 我也尝试过获取窗口和屏幕并调用mapImage = [GMSScreenshot screenshotOfScreen:topWindow.screen];
两者都有相同的效果。
这个问题的解决方案是什么?你能想出一种更好的方法来处理这种情况下的碰撞吗?反向地理编码是否能够检测建筑物的顶部和街道?感谢您的任何帮助!
编辑:图片: 界面生成器:左边是主菜单,右边是游戏。左上角的 Ui 图像视图设置为当前屏幕截图,以供参考。我是这样知道的
Game Play,如您所见,它只显示上一个菜单。
我的 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];
}