RPGツクール2000/イベントコマンド(フィールド)
キー入力の処理
■自作キー待ち設定
(更新:2015/11/21)


イベントコマンド:キー入力の処理には、
オプション:キーが押されるまで待つがあります。


オプション:キーが押されるまで待つは、
キーが押されるまでこのキー入力の処理の所でイベント処理を停止する
と言った設定になりますが、0.5秒だけキー入力待ちがしたいなど、
特殊な条件下でのキー待ち設定には使えません。

このページではキー入力の処理のオプションを使わないで、
キー待ちの処理を行う設定方法を紹介します。



☆自作のキー待ちの基本設定
キー入力の処理オプション:キーが押されるまで待つ使わずに、
自作のキー入力待ちを行いたい時には、以下のように設定します。



▼設定例1
◆ラベルの設定:1番
◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆ウェイト:0.0秒
◆条件分岐:変数[0001:キー]が0
 ◆キー入力の処理:[0001:キー](決定/オプション:OFF)
 ◆
:分岐終了
◆条件分岐:変数[0001:キー]が0<キーが押されていない時
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
〜決定キーが押された時の処理〜

※同じキー入力が2つ連続で続いているのは不具合対策のためです。
 【キー押し続けの不具合対策のページを見る】



▼設定例2定期的に並列処理するで常に処理し続けている)
◆何らかのイベントコマンド
◆何らかのイベントコマンド

◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆条件分岐:変数[0001:キー]が5(オプション:ON)<決定キーが押されている時
 ◆条件分岐:スイッチ[0001:キーを押した]がOFF
  ◆スイッチの操作:[0001:キーを押した]をONにする
  ◆〜決定キーが押された時の処理〜
  ◆
 :分岐終了
 ◆
:それ以外の場合<決定キーが押されていない時
 ◆スイッチの操作:[0001:キーを押した]をOFFにする
 ◆
:分岐終了
◆何らかのイベントコマンド
◆何らかのイベントコマンド




設定例1はキーが押されたら次の処理へと移動する時に使います。
設定例2は何らかのイベントが一緒に設定されており、
キー待ち以外の処理を常に実行し続ける必要がある時に設定します。

設定する内容や設定する制作者によって多少の違いはありますが、
基本的にこの2種類の設定方法を使って、自作のキー待ち処理を作ります。



☆初めからのキーの押し続けを禁止
上記の基本設定ではキー入力の処理を実行する前から、
キー入力の処理で設定しているキーが押されている場合でもキーを押した事になります。

例えば、取り消しキーで自作メニューを開く・自作メニューを閉じるとしている場合、
取り消しキーを押して自作メニューを開いても、
取り消しキーを押し続けている関係ですぐに自作メニューを閉じてしまいます。

このような場合は、一旦キーを離さないとイベント処理が実行されないようにします。



▼設定例1
◆スイッチの操作:[0001:キーを押し続け]をONにする
◆ラベルの設定:1番
◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆ウェイト:0.0秒
◆条件分岐:変数[0001:キー]が0
 ◆キー入力の処理:[0001:キー](決定/オプション:OFF)
 ◆
:分岐終了
◆条件分岐:変数[0001:キー]が0
 ◆スイッチの操作:[0001:キーを押し続け]をOFFにする
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
◆条件分岐:スイッチ[0001:キーを押し続け]がON
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
〜決定キーが押された時の処理〜



▼設定例2定期的に並列処理するで常に処理し続けている)
イベント処理を開始する前に、
◆スイッチの操作:[0001:キーを押した]をONにする
を実行する。

◆何らかのイベントコマンド
◆何らかのイベントコマンド

◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆条件分岐:変数[0001:キー]が5(オプション:ON)
 ◆条件分岐:スイッチ[0001:キーを押した]がOFF
  ◆スイッチの操作:[0001:キーを押した]をONにする
  ◆〜決定キーが押された時の処理〜
  ◆
 :分岐終了
 ◆
:それ以外の場合
 ◆スイッチの操作:[0001:キーを押した]をOFFにする
 ◆
:分岐終了

◆何らかのイベントコマンド
◆何らかのイベントコマンド



☆0.1秒だけキー待ちを行う
決められた時間内(0.1秒)だけ、キー待ちを行うイベントの設定例です。



▼設定例1
◆変数の操作:[0002:待ち時間]代入,6
◆ラベルの設定:1番
◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆ウェイト:0.0秒
◆条件分岐:変数[0001:キー]が0
 ◆キー入力の処理:[0001:キー](決定/オプション:OFF)
 ◆
:分岐終了
◆条件分岐:変数[0001:キー]が0
 ◆条件分岐:変数[0002:待ち時間]が1以上
  ◆変数の操作:[0002:待ち時間]減算,1
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了

◆条件分岐:変数[0002:待ち時間]が1以上(オプション:ON)<0.1秒以内にキーが押された時
 ◆〜決定キーが押された時の処理〜
:それ以外の場合
 ◆〜決定キーが押されなかった時の処理〜
:分岐終了




▼設定例2定期的に並列処理するで常に処理し続けている)
イベント処理を開始する前に、
◆変数の操作:[0002:待ち時間]代入,6
を実行する。
◆何らかのイベントコマンド
◆何らかのイベントコマンド

◆変数の操作:[0002:待ち時間]減算,1
◆条件分岐:変数[0002:待ち時間]が1以上
 ◆キー入力の処理:[0001:キー](決定/オプション:OFF)
 ◆条件分岐:変数[0001:キー]が5(オプション:ON)
  ◆条件分岐:スイッチ[0001:キーを押した]がOFF
  ◆スイッチの操作:[0001:キーを押した]をONにする
   ◆〜決定キーが押された時の処理〜
   ◆
  :分岐終了
  ◆
 :それ以外の場合
  ◆スイッチの操作:[0001:キーを押した]をOFFにする
  ◆
 :分岐終了
 ◆
:分岐終了

◆何らかのイベントコマンド
◆何らかのイベントコマンド




☆2度押し処理
決定キーを押した後に一旦決定キーを離し、0.1秒以内に再び決定キーが押されますと、
別のイベント処理が実行されるイベント処理の設定例です。



▼設定例1
◆キー入力の処理:[0001:キー](決定/オプション:ON)<1度目の決定キー
◆変数の操作:[0002:キー待ち時間]代入,6<キー待ちの時間(60分の1秒単位)
◆スイッチの操作:[0001:キーを一度離した]をOFFにする
◆ラベルの設定:1番
◆キー入力の処理:[0001:キー](決定/オプション:OFF)<2度目の決定キー
◆条件分岐:変数[0001:キー]が5(オプション:ON)<決定キーが押されている時
 ◆条件分岐:スイッチ[0001:キーを一度離した]がON(オプション:ON)
  ◆変数の操作:[0002:キー待ち時間]代入,0<2回目のキー押し(待ち時間を無くす)
  ◆
 :それ以外の場合<1度目に押されたキーを離してない時
  ◆変数の操作:[0001:キー]代入,0<キーを離してないので、キー情報を初期化する
  ◆
 :分岐終了
 ◆
:それ以外の場合<決定キーが押されていない時
 ◆スイッチの操作:[0001:キーを一度離した]をONにする<一度キーを離したのでON
 ◆
:分岐終了
◆条件分岐:変数[0002:キー待ち時間]が1以上<まだキー待ち時間がある時
 ◆変数の操作:[0002:キー待ち時間]減算,1
 ◆ウェイト:0.0秒
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
◆条件分岐:変数[0001:キー]が5(オプション:ON)
 ◆〜時間内に決定キーが2回押された時のイベント〜
 ◆
:それ以外の場合
 ◆〜時間内に決定キーが1回だけ押された時のイベント〜
 ◆
:分岐終了




▼設定例2定期的に並列処理するで常に処理し続けている)
イベント処理を開始する前に、
◆変数の操作:[0002:キー待ち時間]代入,0
を実行する。

◆何らかのイベントコマンド
◆何らかのイベントコマンド

◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆変数の操作:[0002:キー待ち時間]減算,1
◆条件分岐:変数[0001:キー]が5(オプション:ON)<決定キーが押された時
 ◆条件分岐:スイッチ[0001:キーを押した]がOFF
  ◆スイッチの操作:[0001:キーを押した]をONにする
  ◆条件分岐:スイッチ[0002:1回目を押した]がON(オプション:ON)<2回目の決定キーの時
   ◆スイッチの操作:[0002:1回目を押した]をOFFにする
   ◆変数の操作:[0002:キー待ち時間]代入,-1
   ◆〜時間内に決定キーが2回押された時のイベント〜
   ◆
  :それ以外の場合<1回目の決定キーの時
   ◆スイッチの操作:[0002:1回目を押した]をONにする
   ◆変数の操作:[0002:キー待ち時間]代入,6
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆
:それ以外の場合<決定キーが押されていない時
 ◆スイッチの操作:[0001:キーを押した]をOFFにする
 ◆
:分岐終了
◆条件分岐:変数[0002:キー待ち時間]が0<1回目を押してから0.1秒経つ時
 ◆条件分岐:スイッチ[0002:1回目を押した]がON
  ◆スイッチの操作:[0002:1回目を押した]をOFFにする
  ◆〜時間内に決定キーが1回だけ押された時のイベント〜
  ◆
 :分岐終了
 ◆
:分岐終了

◆何らかのイベントコマンド
◆何らかのイベントコマンド



☆残り0.5秒で決定キーを押すと別のイベントが処理される
制限時間3秒間の中で残り0.5秒の時に決定キーを押しますと、
「合格」と言う文章が表示され、残り0.5秒より早く押したり、
制限時間内に決定キーが押さなかったりした時には、
「不合格」が表示されるイベントの設定例です。



▼設定例1
◆変数の操作:[0002:制限時間]代入,180<3秒の設定(制限時間を60分の1秒単位で設定)
◆ラベルの設定:1番
◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆変数の操作:[0002:制限時間]減算,1
◆条件分岐:変数[0001:キー]が0<決定キーが押されていない時
 ◆条件分岐:変数[0002:制限時間]が0以上<キーが押されず、まだ制限時間が残っている時
  ◆ウェイト:0.0秒
  ◆指定ラベルへ飛ぶ:1番
  ◆
 :分岐終了
 ◆
:分岐終了
◆条件分岐:変数[0002:キー待ち時間]が0以上<残り時間が終わる前にキーを押した時
 ◆条件分岐:変数[0002:キー待ち時間]が30以下<残り0.5秒以内にキーを押した時
  ◆文章:合格
  ◆指定ラベルへ飛ぶ:2番
  ◆
 :分岐終了
 ◆
:分岐終了
◆文章:不合格
◆ラベルの設定:2番




▼設定例2定期的に並列処理するで常に処理し続けている)
イベント処理を開始する前に、
◆変数の操作:[0002:制限時間]代入,180<3秒の設定(制限時間を60分の1秒単位で設定)
を実行する。

◆何らかのイベントコマンド
◆何らかのイベントコマンド

◆キー入力の処理:[0001:キー](決定/オプション:OFF)
◆変数の操作:[0002:キー待ち時間]減算,1
◆条件分岐:変数[0001:キー]が5<決定キーが押された時
 ◆条件分岐:変数[0002:キー待ち時間]が0以上<残り時間が終わる前にキーを押した時
  ◆条件分岐:変数[0002:キー待ち時間]が30以下<残り0.5秒以内にキーを押した時
   ◆文章:合格
   ◆指定ラベルへ飛ぶ:1番
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆文章:不合格
 ◆ラベルの設定:1番
 ◆
:分岐終了

◆何らかのイベントコマンド
◆何らかのイベントコマンド



☆自作メニューを開く時に、
 主人公が重なると実行されるマップイベントが
 確実に実行させるためにキー処理を遅らせる設定

マップイベントの上に主人公が重なってマップイベントが実行される場合、
マップイベントを重なると同時に自作メニューを開こうとして、
イベントコマンド:キャラクターの動作指定一時停止などを実行しますと、
マップイベントの主人公が触れたときの処理が実行されない事があります。

マップイベントへ
向かって移動

重なる時にキーを押して
メニューを開く


そこでマップイベントがあるかどうかを調べてマップイベントがある場合は、
メニューを開く処理を一時的に止める処理を設定します。



▼設定例
◆キー入力の処理:[0001:キー](取消/オプション:OFF)
◆条件分岐:変数[0001:キー]が6
 ◆スイッチの操作:[0001:キーを押した]をONにする
 ◆
:分岐終了
◆変数の操作:[0002:X座標]代入,主人公のX座標
◆変数の操作:[0003:Y座標]代入,主人公のY座標
◆指定位置のイベントID取得:(V[0002],V[0003),[0004:イベントID]
◆条件分岐:変数[0005:前のイベントID]がV[0004]以外
 ◆変数の操作:[0005:前のイベントID]代入,変数[0004]の値
 ◆条件分岐:変数[0004:イベントID]が1以上
  ◆変数の操作:[0006:キー待ちカウント]代入,8<標準速の設定
  ◆
 :分岐終了
 ◆
:分岐終了
◆変数の操作:[0006:キー待ちカウント]減算,1
◆条件分岐:変数[0006:キー待ちカウント]が0以下
 ◆条件分岐:スイッチ[0001:キーを押した]がON
  ◆スイッチの操作:[0001:キーを押した]をOFFにする
  ◆〜自作メニューの処理〜
  ◆
 :分岐終了
 ◆
:分岐終了


※主人公と重なった時に実行されるマップイベントのイベント実行内容の最初に、
 ◆スイッチの操作:[0001:キーを押した]をOFFにする
 を設定しますと、自作メニューの表示をキャンセルする事ができます。


※主人公の移動速度によって、
 ◆変数の操作:[0006:キー待ちカウント]代入,8
 の代入する数値を変えてください。

速度 代入数値
4倍速
2倍速
標準速
1/2倍速 16
1/4倍速 32
1/8倍速 64



◎関連ページ
 ●イベントコマンド:キー入力の処理
 ○同時押しの処理
 ○キー押し続けの不具合対策


YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール