XNAゲーム(Windows)でローカルマルチプレイヤーを作成する方法に関するチュートリアルやサンプルはありますか?
ネットワーキングゲームのチュートリアルはよく見かけますが、2人目のプレーヤーを入力する方法については見たことがありません。同じオブジェクトを異なるコントローラーで使用するために、2番目のプレーヤーにサインインするように依頼する方法...
ありがとう。
XNAゲーム(Windows)でローカルマルチプレイヤーを作成する方法に関するチュートリアルやサンプルはありますか?
ネットワーキングゲームのチュートリアルはよく見かけますが、2人目のプレーヤーを入力する方法については見たことがありません。同じオブジェクトを異なるコントローラーで使用するために、2番目のプレーヤーにサインインするように依頼する方法...
ありがとう。
チュートリアルに出くわしたことはありませんが、いくつかの基本的なアイデアの概要を説明できます.
すべてのプレーヤーが同一である場合:
「プレーヤー」オブジェクト コンストラクターを変更して、いくつかの playerIndex のパラメーターを指定します。プレーヤー クラス内の入力をチェックする場合は、このインデックスを使用します。そうすれば、それぞれに個別のクラスを作成する必要なく、一連の「プレーヤー」を作成できます。次に、次のような汎用コードを記述できます。
if (inputManager.IsMoveRight(playerIndex))
{
// do some stuff etc.
}
これには、入力管理構造にいくつかの変更が必要になります。すでに持っているコードを一般化することを目指すべきです。
各プレーヤーの実装が完全に異なる場合:
この場合、ポリモーフィズムを利用する必要があります。各プレイヤーがメニュー画面で自分のキャラクターを選択する必要がある場合は、プレイヤー クラスに、選択したキャラクターを保持する属性が必要です(注: 各プレイヤーを既定のプリセットにする必要がある場合、つまり、プレイヤー 1 は常にマリオ、プレイヤー 2 は常にマリオです)。は常にソニックなので、プレイヤーごとにプレイヤー クラスをサブクラス化するのがおそらく最善でしょう)。必要に応じて、このアトリビュートをレイヤの上に移動し、「コントローラ」クラスに格納できます。
メニュー ロジック:
プレイヤーのサインインの処理は、レベルが読み込まれる前に行うのが最善です。ゲーム中にプレイヤーがドロップイン/ドロップアウトする必要はないと仮定します。基本的な概要:
ゲームがキャラクター選択画面 (またはメイン メニューのみ) にある場合は、すべてのコントローラーからの入力を確認します。コントローラーが「開始」を押した場合、サインインします。これには、たとえば、playerIndex を配列に追加するだけで済みます。次に、ゲームがロードされたら、アクティブなプレーヤーの配列を確認し、見つかったプレーヤーをスポーンします。
キャラクター選択もほぼ同じ方法で実装できますが、おそらく特定のメニュー サインイン画面が必要になるでしょう。サインイン画面でアクティブなプレイヤーからの入力を確認し、スクロールしてキャラクターを選択できるようにします。結果をどこかに保存します (たとえば、プレーヤーまたはコントローラー クラス)。
その他の考慮事項:
ゲームパッドだけでなく、キーボードからも入力を取得していますか? この場合、キーボードをプレーヤー 1 にデフォルト設定し、ゲームパッドからのサインイン/サインアウトのみを許可する方が簡単な場合があります。
これについては前に述べましたが、スパゲッティ コードの重大なケースを防ぐために、入力管理を一般化する必要があります。これが機能するためには、プレイヤー クラス内から直接、以前/現在のコントローラーの状態をチェックするべきではありません。MSDN Game State Managementサンプルは、同様のシステムを使用しているため、検討する価値があります。
これは非常に包括的なガイドではありませんが、考慮すべき点をいくつか挙げることができれば幸いです。