Oneshot Gems
今すぐプレイ

ゲーム開発者向け

キーボード入力に明確な契約を与える

各キーに明確な役割があり、ゲームが押す動作と押し続ける動作を区別している場合、キーボード コントロールは信頼できると感じられます。実装する前に、意図したマッピングを書き留めてください。たとえば、矢印は方向を変え、スペースはアクションを実行し、エスケープはメニューが存在する場合にのみ一時停止メニューを開きます。次に、単一のキーダウンのみを検証するのではなく、フォーカス、繰り返し、リリースの動作をテストします。

このページの内容

意味とレイアウトでキーを選択

操作をキーボード配列で入力される文字に対応させる場合はKeyboardEvent.keyを使い、物理的なキーの位置に対応させる場合はKeyboardEvent.codeを使います。この違いはキーボード配列によって結果が変わります。一貫した割り当てを用意して説明に示し、誰もがWASDを使うと決めつけないようにします。

テキストフィールドや編集可能なコントロールにフォーカスがある間は、キー入力を横取りしないでください。ページのスクロールなどブラウザーの既定動作を止めるのは、ゲーム面がそのキーを実際に処理する場合だけにします。そうすれば、プレイヤーがゲーム領域に入る前に通常の文字入力を妨げたり、ブラウザーの操作を邪魔したりしません。

押下状態とキーの解放を管理する

連続移動では、keydownでキーの押下状態を有効にし、keyupで解除します。キーを押し続けるとブラウザーはkeydownを繰り返し送ることがあります。そのため、ジャンプのような一度だけの動作は、繰り返しが意図された仕様でない限り、反復を無視します。ゲームがフォーカスを失ったときやウィンドウが非アクティブになったときは、押下中のキーを解除します。フォーカスが別の場所に移るとkeyupがゲームに届かない場合があるためです。

2つのキーの同時入力、長押し、短いタップ、フォーカスを失ってから戻ったときの動作をテストします。一度だけ行う操作では、繰り返しが仕様でない限り、keydownの反復を無視します。MDNではKeyboardEvent.key、KeyboardEvent.code、イベントの種類が説明されています。操作の割り当てに合うプロパティを選びましょう。

⁨ブラウザゲームのキーボードコントロール⁩についての質問

ゲーム操作にはKeyboardEvent.keyとKeyboardEvent.codeのどちらを使うべきですか?

入力された文字やキーボード配列に応じて操作するならKeyboardEvent.keyを使います。物理的なキーの位置に応じて操作するならKeyboardEvent.codeを使います。どちらを選んだか明示し、別の配列でもテストします。

ページがフォーカスを失ったとき、なぜ押下中のキーを解除するのですか?

フォーカスが移ると、ブラウザーからゲームへkeyupが送られないことがあります。入力状態を消去しておけば、プレイヤーが戻ったときに移動が続いたままになるのを防げます。

関連情報

古い情報を見つけましたか? 訂正を連絡

もっと遊ぼう。

いつでも遊べる無料ブラウザーゲーム。楽しいゲームを見つけて、次のお気に入りにしよう。

気になることを、もっと