0

Enter キーを押すとゲームが開始される開始イメージがあります。問題は、これは画像であるため、ゲーム画面を表示し続けるにはボタンを押し続ける必要があることです。ボタンを押すと画像がオフのままになるようにする方法はありますか?

Update Method:

helpScreen = new HelpScreen(this); 

if (!helpScreen.gamestarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    helpScreen.gamestarted = true;
}

Draw Method:

if (!helpScreen.gamestarted)
{
    helpScreen.Draw(spriteBatch);
}
4

2 に答える 2

0

質問してもよろしいですか、入力を取り巻く他のコーディングを行ったことはありますか? それとも、このヘルプ画面から始めていますか? これは、入力処理の基本をカバーしているためです。

実際にはゲーム ループであるのに、これをイベント ドリブン システムとして見ているようです。これは、ループごとに値をチェックし、イベント (例: クリック) ではなく、それに基づいて出力することを意味します。

私がすることは、前の値を記録し、次のループでその値を現在の値と比較することです。Update メソッドの例:

//Outside of Update loop declare
KeyboardState previousState = Keyboard.GetState();

//Inside update loop
if (Keyboard.GetState().IsKeyUp(Keys.Enter) && previousState.IsKeyDown(Keys.Enter))
{
        helpScreen = null;     }

これは、Enter ボタンが押されて離されたときにトリガーされます。そのコードには他にも多くの変更を加える必要がありますが、これにより、この特定の問題に対する正しい方向性が示されるはずです。

于 2012-12-07T12:36:15.297 に答える
0

状態をメイン ゲーム クラスに保存します。

private bool gameStarted = false;

update メソッドで、入力を確認します。

if (!gameStarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    gameStarted = true;
}

ゲームがまだ開始されていない場合、描画メソッドの後半で開始画像のみを描画します。

if (!gameStarted)
{
    helpScreen.Draw(spriteBatch);
}

そうすれば、プレイヤーがボタンを押すと、再び描画されることはありません。また、一般的なgameStartedフィールドを使用すると意図が明確になり、シンプルかつ自然な方法でその状態に基づいて他のゲーム ロジックを作成できます。

于 2012-12-07T12:19:25.303 に答える