BazInputCondition
ゲームオブジェクト向けのアナログ対応入力条件。ジョypadのスティック、トリガー、デッドゾーンを読み取り、状態をまたいで維持される入力バッファリング(ジャンプバッファリングがそのまま機能する)もサポートします。3つのモード、1つのファイル、オートロード不要、プラグイン不要、プロジェクト設定の変更も不要です。
私の活動を支えていただくには、パトロンになることを検討してください。![]()
ダウンロード:
v1.2:
BazInputCondition.gd (32.1 KB)
このアップデートにより、以前のBazInputConditionリソースは互換性がなくなります。AGM入力の性質上、必要な設計変更です。以前のバージョンでローカルマルチプレイヤー設定でうまく動作しないとお感じの場合は、このバージョンが必要です。
- 2つのモードに統合:SingleとMovement。 Stick / Vectorモードは廃止されました。各方向が独自のキーを読み取るため、スティック、キーボード、Dパッドがすべて同じ挙動になります。ファイルサイズが小さくなり、インスペクターがすっきりしました。
- Movementモードでのカスタムキー。 新しいSourceフィールド(MoveAndJumpSetting Keys / Custom Keys)で、独自の4つのキーを選択できます。特定の方向をスキップする場合は、そのフィールドを空のままにしてください。
- デッドゾーン有効化トグル。 デフォルトはオフで、ボタンやキーは0/1のまま維持されます。スティックやトリガーが入力を駆動する場合にオンにし、デッドゾーンスライダーが閾値として機能します。
- 両モードで4つのタイミングをすべて使用可能。 Pressed、Just Pressed、Released、Just Releasedがどこでも利用可能になり、「停止中は4方向すべてが解放されている」という判定が正常に動作します。以前はスティックは保持中のみとして扱われていました。
- Any Key / All Keys。 チェックされた方向とTriggered Whenを組み合わせて使用します。Any Keyはどれか1つで発動し、All Keysはそれらを同時に押している必要があります(例:斜め移動のためのUp + Right)。これは従来の8方向デッドゾーンに取って代わるものです。
v1.1:
BazInputCondition.gd (37.1 KB)
- MovementおよびStickモードでアナログスティックの検出が可能に。 これらのモードは、ランタイム時に各オブジェクトのプレイヤー固有の入力セットを読み取るため、移動キーがスティック軸に直接バインドされていない場合でも、左スティックが正しく認識されます。(以前は、Movement / Stickモードでスティックが「無効」として読み取られることがありました。)
- マルチプレイヤー対応。 Single、Movement、Stickのすべてが、操作しているプレイヤーの固有の入力(オブジェクトの
player_idから取得)に解決されるため、各プレイヤーは自分のコントローラーにのみ反応します。自動で設定不要です。プレイヤー1〜4に対応しています。 - Movementモードでラジアル(円形)デッドゾーンを採用。 斜め入力は直線入力と同じように扱われます:デッドゾーンを0.9に設定しても、完全な斜め押しでもトリガーされます。方向は8方向バンドで選択されます(斜め押しをすると、隣接する2方向が点灯します)。キーボードとDパッドは従来通り動作します。
- **「解放済み / 静止状態」のチェックで、完全な斜め押しを「解放済み」と誤認しなくなりました。
v1.0:
BazInputCondition.gd (29.6 KB)
要件
AGMaker 1.3.0以降
インストール
BazInputCondition.gd(以下に添付)をダウンロードします。- プロジェクトの
custom_conditions/フォルダに配置します。このフォルダが存在しない場合は、プロジェクトルートに作成してください。custom_conditions/input/のようなサブフォルダでも問題ありません。 - 完了です。Add ConditionダイアログのInput / 入力グループに表示されます。有効化する必要はありません。
機能
AGMakerの標準的なInput条件を、アナログ対応の完全な機能に置き換えます。
- 3つのモード: Single Input(1つのキー)、Movement(オブジェクトのMove & Jump Settingsからの方向)、Stick / Vector(アナログスティック全体)。
- 4つのタイミング: Pressed、Just Pressed、Released、Just Released。
- 1つのデッドゾーン: アナログスティックとトリガー用の単一の閾値。通常のボタンは0/1として読み取られるため、デッドゾーンは影響しません。
- Movementオプション: Any Direction(任意の方向)、またはSpecific Directions(Up/Down/Left/Right)をAny of these(いずれか)またはAll of these(すべて同時に)と組み合わせて使用します。各オブジェクトのMove & Jump Settingsで設定されたキーに従います。
- Stick / Vectorオプション: Pushed(任意の方向でデッドゾーンを超えた押し込み)またはAiming Toward Angle(許容範囲内で特定の角度を向いている場合)。
- Accept Frame Count: 状態をまたいで機能する入力バッファリングウィンドウ。ジャンプバッファリングがそのまま機能します。
使用方法
遷移に条件を追加し、Input Modeを設定します。フィールドはそれに合わせて更新されます:
- Single Input → Input Key(A, B, arrow_up, …)→ Deadzone → Input Method
- Movement → Movement Check(Any Direction / Specific Directions)→ Deadzone → Input Method
- Stick / Vector → Stick Check(Pushed / Aiming Toward Angle)→ Deadzone → Input Method
各フィールドの説明:
- Input Method はタイミングです:Pressed(保持中)、Just Pressed(押下されたフレーム)、Released(解放済み)、Just Released(解放されたフレーム)。
- Deadzone は、スティックやトリガーがカウントされるために押し込まれる距離(0〜1)です。通常のボタンは無視します。
- Accept Frame Count(Justタイミングで表示)は、Nフレームの間、押下を記憶します。これにより、遷移が少し遅れても入力を許可できます(例:着地直前にジャンプを押す)。状態変更をまたいで機能します。
ヒント
- デッドゾーンはアナログ入力にのみ影響します。 ボタンは0/1として読み取られるため、デッドゾーンは影響しません。
- 入力の解放(Released / Just Released)は、デッドゾーンを小さく設定すると最も効果的です。 「解放済み」のチェックは、スティックがデッドゾーン以下にある場合にtrueとなります。デッドゾーンが大きいと、押し続けているにもかかわらず「解放済み」と判定されてしまいます。Pressed(開始)とReleased(停止)をペアにする場合は、ReleasedのデッドゾーンをPressedのデッドゾーンより小さく設定してください。この2つの閾値の間のギャップがバッファとして機能し、スティックが閾値付近で静止している際の入力のオン/オフのちらつきを防ぎます。
- Movementの方向は、各オブジェクトのMove & Jump Settingsから取得されます。 それがないオブジェクトは、矢印キーにフォールバックします。
- Stick / Vectorは、現時点で保持中のタイミング(PressedおよびReleased)をサポートしています。



