1

車 (UIView) が Google マップの ios api の上に置かれる iOS 用の運転ゲームを作成しています。車とマップに表示される灰色の建物との衝突を検出するのに問題があります。

私はピクセルの色でそれをやろうとしています。つまり、車のすぐ前のピクセルの色が建物の屋根の色(灰色)であるかどうかを確認しています。iPhone のピクセル カラーに直接アクセスすることはできないため、Google マップのスクリーンショット メソッドを使用して画像を取得し、そこからピクセル カラーを取得しています。問題は、残したばかりの画面のスクリーンショットしか撮れないことです。を使用して mapImage = [GMSScreenshot screenshotOfMainScreen];います。また、ウィンドウとスクリーンを取得して呼び出しmapImage = [GMSScreenshot screenshotOfScreen:topWindow.screen];てみましたが、両方とも同じ効果があります。

この問題の解決策は何ですか? この状況で衝突を処理するより良い方法を考えられますか? リバース ジオコーディングには、建物の上部と通りを検出する機能がありますか? 助けてくれてありがとう!

編集: 画像: Interface Builder: 左がメイン メニュー、右がゲームです。左上隅の Ui イメージ ビューは、参照目的で現在のスクリーン ショット イメージとして設定されます。このように私はそれを知っていました

ゲームプレイ、ご覧のとおり、前のメニューのみを表示しています。

私の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];
}
4

1 に答える 1