Oneshot Gems
今すぐプレイ

ゲーム開発者向け

キーを放し忘れた場合の入力状態のクリア

キーの長押しを記録するゲームでは、keydownでフラグを立て、keyupで解除することがよくあります。方向キーを押したまま別のタブに切り替えると、キーを離したイベントを受け取れず、ゲームに戻っても移動し続ける場合があります。これはキーの割り当てとは別の、画面の切り替えや中断に伴う不具合です。押下中のキーの集合を明確に管理し、決められた中断箇所でその状態をクリアしてください。解決したと判断する前に、キー入力を中断しうる各経路をテストしてください。

このページの内容

繰り返される動作イベントではなく、押下を状態として追跡します

キーダウン時に、関連するキーをセットに追加します。更新ステップ中に、そのセットを読み取って移動を決定します。キーアップ時に削除します。これにより、オペレーティング システムのキーリピート イベントをゲームの動作クロックとして扱うことがなくなります。また、チャージショットを 1 回発射するなど、アクションを 1 回だけ開始する必要がある場合は、すでに保持されているキーの 2 回目のキーダウンも無視します。 MDN では、キーを押し続けると繰り返しキーダウン イベントが生成される可能性があり、KeyboardEvent.repeat はサポートされているブラウザーでそれらの繰り返しイベントを識別できると説明しています。

どのキーをゲーム コントロールとしてカウントするかを選択し、テキスト フィールドはそのままにしておきます。プロンプトまたは名前入力フィールドにフォーカスがある場合、移動ハンドラーは同じ文字を消費しないでください。本当にその動作が必要なコントロールに対してのみページ スクロールなどのブラウザのデフォルトを防止し、プレーヤーがゲーム領域を出るときに通常のページ動作を復元します。

割り込みおよび状態変化時にセットをクリアする

ウィンドウがぼやける、ドキュメントが非表示になる、一時停止オーバーレイが制御する、または実行がリセットされると、保持されている入力がクリアされます。 Visibilitychange ハンドラーは document.hidden をチェックし、それが true になったときにセットをクリアできます。フレームやポインターの移動ごとにやみくもにクリアしないでください。キーアップが到着しない可能性がある場合、クリアを割り込みに結び付けます。ゲームが古い動作を自動的に再開するのではなく、再開後に新たなキーダウンを要求するようにします。

中断パスを再現する

左方向キーを押したままタブを切り替え、ジャンプを押したままメニューを開き、再起動中に方向を押します。プレイに戻ったら、もう一度意図的に押すまでキャラクターが静止していることを確認します。右 + ジャンプなどの 2 つの同時キーで繰り返し、一方のキーをクリアしてももう一方のキーがラッチされたままにならないようにします。ゲーム コントロールとテキスト入力の間のキーボード フォーカスの変更を含めます。

⁨ブラウザゲームでキーが動かなくなるのを防ぐ⁩についての質問

キーを放した後もキーが保持されたままになるのはなぜですか?

フォーカスが変更されるか、オーバーレイが制御を握ると、ゲームは一致するキーアップを受信または処理できない場合があります。これらの中断パス上の保持状態をリセットすると、プレーヤーは正常に再開されます。

キーリピートでキャラクターの動きを制御すべきでしょうか?

継続的なモーションの場合、保持状態を追跡し、ゲーム ループ内の動きを更新します。 「Repeat」は、アクションが 1 回発生する必要がある場合に、繰り返されるキーダウン イベントと最初の押下を区別する場合により便利です。

関連情報

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

もっと遊ぼう。

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

気になることを、もっと