キー入力検知処理/銃を構えて撃つ動作


キー入力検知処理を作る


前の項で作った最初のマップイベントを改変します。
スイッチ#0001に戦闘可能と名前を付けてゲーム開始時ONにするよう設定。
変数とアイテムの増減処理は後に必要となるので最初に書いておきましょう。

スイッチに以下のように名前を付け、
0002:アクション中
0003:武器構え中
キー入力を検知するコモンイベントを作ります。
ついでにほかのコモンイベントにも名前を付けましょう。
+ コード クリックで表示
◆条件分岐:アクション中がOFF
 ◆条件分岐:スクリプト:Input.isTriggered("shift")
   ◆注釈:シフトキーで武器構え
   ◆コモンイベント:武器構え/解除
   ◆
 :分岐終了
 ◆条件分岐:武器構え中がON
   ◆条件分岐:スクリプト:Input.isTriggered("ok")
     ◆注釈:決定キーで攻撃
     ◆コモンイベント:攻撃アクション
     ◆
   :分岐終了
   ◆条件分岐:スクリプト:Input.isTriggered("C")
     ◆注釈:Cキーでリロード
     ◆コモンイベント:リロード
     ◆
   :分岐終了
   ◆
 :分岐終了
 ◆
:分岐終了
※スクリプトInput.isTriggered("キー名")はそのキーが"押された瞬間"に反応するよう使用しています。
 デフォルトで条件分岐すると長押しでも反応します。

スイッチ0001「戦闘可能」がONで0002「アクション中」がOFFの間、キーを押したら対応するコモンイベントが呼び出される処理を作りました。

銃を構える動作を作る

次にコモンイベント0002「武器構え/解除」を編集します。
+ コード クリックで表示
◆条件分岐:スクリプト:$gameActors._data[1]._equips[0]._itemId != 0
 ◆スイッチの操作:#0002 アクション中 = ON
 ◆SEの演奏:RTP_鍵 (100, 150, 0)
 ◆条件分岐:武器構え中がOFF
   ◆スイッチの操作:#0003 武器構え中 = ON
   ◆メニュー禁止の変更:禁止
   ◆条件分岐:聖奈がハンドガンを装備している
     ◆移動ルートの設定:プレイヤー (ウェイト)
     :        :◇画像:!聖奈セットハンドガン(1)
     :        :◇ウェイト:6フレーム
     :        :◇画像:!聖奈セットハンドガン(2)
     :        :◇ウェイト:6フレーム
     ◆
   :分岐終了
   ◆
 :それ以外のとき
   ◆スイッチの操作:#0003 武器構え中 = OFF
   ◆条件分岐:聖奈がハンドガンを装備している
     ◆移動ルートの設定:プレイヤー (ウェイト)
     :        :◇画像:!聖奈セットハンドガン(1)
     :        :◇ウェイト:6フレーム
     :        :◇画像:!聖奈セットハンドガン(0)
     :        :◇ウェイト:6フレーム
     ◆
   :分岐終了
   ◆メニュー禁止の変更:許可
   ◆
 :分岐終了
 ◆スイッチの操作:#0002 アクション中 = OFF
 ◆
:分岐終了
※6フレームは0.1秒に相当。
※SEのピッチは最大にすると聞きなれたカチッ音になります。

コモンイベント0001「キー入力」から呼び出される処理を作りました。シフトキーを押すと
アクターがハンドガンを装備中、スイッチ0003「武器構え中」がOFFなら構えの動作、ONなら構え解除の動作をします。
丸腰の場合はスクリプトではじかれます。

構え中に攻撃する動作を作る

コモンイベント0003「攻撃アクション」を編集します。
変数は適宜作成してください。後のリロードシステムで使用します。
+ コード クリックで表示
◆スイッチの操作:#0002 アクション中 = ON
◆条件分岐:聖奈がハンドガンを装備している
 ◆条件分岐:ハンドガン残弾数 > 0
   ◆変数の操作:#0001 ハンドガン残弾数 -= 1
   ◆SEの演奏:BIO4_ハンドガン1 (100, 100, 0)
   ◆条件分岐:プレイヤーが下を向いている
     ◆アニメーションの表示:プレイヤー, !ハンドガン↓
     ◆
   :分岐終了
   ◆条件分岐:プレイヤーが左を向いている
     ◆アニメーションの表示:プレイヤー, !ハンドガン←
     ◆
   :分岐終了
   ◆条件分岐:プレイヤーが右を向いている
     ◆アニメーションの表示:プレイヤー, !ハンドガン→
     ◆
   :分岐終了
   ◆条件分岐:プレイヤーが上を向いている
     ◆アニメーションの表示:プレイヤー, !ハンドガン↑
     ◆
   :分岐終了
   ◆スイッチの操作:#0004 ハンドガン攻撃処理 = ON
   ◆移動ルートの設定:プレイヤー (ウェイト)
   :        :◇画像:!聖奈セットハンドガン(3)
   :        :◇ウェイト:6フレーム
   :        :◇画像:!聖奈セットハンドガン(4)
   :        :◇ウェイト:6フレーム
   :        :◇画像:!聖奈セットハンドガン(2)
   :        :◇ウェイト:12フレーム
   ◆
 :それ以外のとき
   ◆条件分岐:パーティがハンドガンの弾を持っている
     ◆コモンイベント:リロード
     ◆
   :それ以外のとき
     ◆SEの演奏:RTP_鍵 (100, 150, 0)
     ◆
   :分岐終了
   ◆
 :分岐終了
 ◆
:分岐終了
◆スイッチの操作:#0002 アクション中 = OFF
※変数0001「ハンドガン残弾数」は次の項のリロード処理で、スイッチ0004「ハンドガン攻撃処理」は次回の当たり判定処理で使います。

コモンイベント0001「キー入力」から呼び出される処理を作りました。武器構え中に決定キーを押すと
アクターがハンドガンを装備中、変数0001「ハンドガン残弾数」が0より大きければ攻撃の動作、それ以外ならリロード(または弾切れ)の処理です。

リロードする動作を作る

コモンイベント0004「リロード」を編集します。
ハンドガンの装弾数は10として作成しています。
変数は適宜作成してください。
+ コード クリックで表示
◆スイッチの操作:#0002 アクション中 = ON
◆条件分岐:聖奈がハンドガンを装備している
 ◆変数の操作:#0002 装填する弾数 = 10
 ◆変数の操作:#0002 装填する弾数 -= ハンドガン残弾数
 ◆変数の操作:#0003 ハンドガンの弾所持数 = ハンドガンの弾の数
 ◆条件分岐:装填する弾数 ≠ 0
   ◆条件分岐:パーティがハンドガンの弾を持っている
     ◆移動ルートの設定:プレイヤー (ウェイト)
     :        :◇SE:BIO1_ハンドガン02 (100, 150, 0)
     :        :◇ウェイト:6フレーム
     :        :◇画像:!聖奈セットハンドガン(1)
     :        :◇ウェイト:12フレーム
     :        :◇画像:!聖奈セットハンドガン(2)
     ◆条件分岐:ハンドガンの弾所持数 ≥ 装填する弾数
       ◆アイテムの増減:ハンドガンの弾 - {装填する弾数}
       ◆変数の操作:#0001 ハンドガン残弾数 += 装填する弾数
       ◆
     :それ以外のとき
       ◆アイテムの増減:ハンドガンの弾 - {ハンドガンの弾所持数}
       ◆変数の操作:#0001 ハンドガン残弾数 += ハンドガンの弾所持数
       ◆
     :分岐終了
     ◆ウェイト:12フレーム
     ◆
   :分岐終了
   ◆
 :分岐終了
 ◆
:分岐終了
◆スイッチの操作:#0002 アクション中 = OFF

コモンイベント0001「キー入力」、0003「攻撃アクション」から呼び出される処理を作りました。
武器構え中にCキーを押す、または銃の弾数が0の状態で決定キーを押したときリロードします。
ここで、変数0001「ハンドガン弾数」は装備中のハンドガンに装填されている弾の数です。
アイテム「ハンドガンの弾」の所持数とは異なる意味を持っているため注意が必要です。

ここまでで以下の動画のように動作すれば成功です。
videoプラグインエラー: 正しいURLを入力してください。

次の項では当たり判定処理を作り敵に攻撃が通るように製作していきます。
最終更新:2024年04月09日 15:48