0

Game Center 向けのゲームを開発しています。

ゲームの説明:-

ゲームには 5 つのタイル マップがあるため、1 人のプレイヤーがゲームのイニシエーターになります (いずれかのプレイヤー (イニシエーター) によってランダムに 1 つのタイル マップのみが選択されます)。イニシエーターは選択したタイルマップを 2 番目のプレイヤーに送信します。このタイルマップは 2 番目のプレイヤー側で描画されます (この時点で両方のプレイヤーが同じタイルマップを持っています)。

これは、プレイヤーに招待状を送信してゲームを開始すると正常に動作します。

しかし、「オートマッチ」でゲームを開始すると、誰がイニシエーターになるのか(ランダムに選択されたタイルマップを送信するのは誰なのか)を見つけることができません。

このコードで 1 つのプレイヤー イニシエーターを作成しました。

isThisInvited_Player = YES;  
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_INVITATION_ACCEPTED object:nil];


- (void)authenticationChanged {    

    if ([GKLocalPlayer localPlayer].isAuthenticated && !userAuthenticated) {
       userAuthenticated = TRUE;  

    [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {

        isThisInvited_Player = YES;
        self.pendingInvite = acceptedInvite;
        self.pendingPlayersToInvite = playersToInvite;
        [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_INVITATION_ACCEPTED object:nil];

    };

} else if (![GKLocalPlayer localPlayer].isAuthenticated && userAuthenticated) {
   userAuthenticated = FALSE;
}

}

"automatch" でデータ同期ができない場合、game-center-view-controller で automatch(Play) ボタンを無効にする方法を教えてください。

4

1 に答える 1

1

2 人のプレイヤーを playerID で並べ替えることで、開始者を選択し、並べ替えられた配列の最初のプレイヤーを常に開始者にすることができます。

于 2012-12-13T23:32:34.593 に答える