RPGツクール2000/イベントコマンド(フィールド)
キー入力の処理
■キー押し続けの不具合対策
(更新:2016/08/13)


イベントコマンド:キー入力の処理にて、
定期的にキー入力が反応しない状態に関する情報と対策を紹介します。



☆キーの押し続けが途切れる不具合について
決定キーを押し続ける事によって何らかのイベントを実行させる場合は、
以下のような設定を行います。

イベント開始条件:定期的に並列処理する
◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
◆条件分岐:変数[0001:キー入力]が5
 ◆〜決定キーを押し続けた時の設定〜
 ◆
:分岐終了


基本的にこの設定で良いのですが、
この設定で『Windows7』や『8.1』で動作テストを行うとキー入力がうまく行われず、
変数[0001:キー入力]の値が「5→0→5→0…」となり、
キーの押し続けがうまく機能しない事があります。



原因としては、
うたかたの夢跡さんのサイト(http://utakata-no-yume.net/で、
マルチコアに原因があるのではないかと言われています。

ただマルチコアであるパソコンで『Windows8.1』の時は確かに不具合が発生していたのに、
『Windows10』にバージョンアップしたら不具合が確認できなくなりました。
他の『Windows10』のパソコンでも不具合が確認できず、
もしかすると『Windows10』で改善された可能性があります。

仮に『Windows10』で改善されたとしても、
プレイヤーが『Windows7』などを使ってプレイする可能性がありますので、
キー押し続けの不具合を考慮した設定は行った方が良いでしょう。



☆不具合対策を考慮したキー押し続け処理
キー押し続けの処理は、「ウェイト:0.0秒」を挟み、
2つのキー入力の処理を設定して処理します。

そして2回ともキーが押されていない場合(変数の値が「0」の場合)は、
キーを押していないと判断させます。

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




定期的に並列処理するで実行しており、ラベルウェイトが設定できない場合は、
以下のように設定してください。

この処理の場合は、キーが押されていない時には、
1回だけ(60分の1秒だけ)キーが押されている事にし、
2回連続でキーが押されていない場合は、キーを離したと判断されます。

イベント開始条件:定期的に並列処理する
◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
◆条件分岐:変数[0001:キー入力]が0(オプション:ON)
 ◆条件分岐:スイッチ[0001:キー押し確認]がOFF
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆スイッチの操作:[0001:キー押し確認]をOFFにする
 ◆
:それ以外の場合
 ◆スイッチの操作:[0001:キー押し確認]をONにする
 ◆
:分岐終了
〜決定キーを押し続けた時の設定〜



決定キーを押したあとに、キーを押し続けてキーを離すまでの時間を計る場合は、
以下のように設定します。
※変数[0002:時間]は60分の1秒単位の時間を設定します。

◆ラベルの設定:1番
◆キー入力の処理:[0001:キー入力](決定/オプション:ON)<決定キーが押されるまで待機
◆変数の操作:[0002:時間]代入,0
◆ラベルの設定:2番
◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
◆ウェイト:0.0秒
◆条件分岐:変数[0001:キー入力]が0
 ◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
 ◆
:分岐終了
◆変数の操作:[0002:時間]加算,1
◆条件分岐:変数[0001:キー入力]が5<決定キーを押し続けている時
 ◆指定ラベルへ飛ぶ:2番
 ◆
:分岐終了
◆条件分岐:変数[0002:時間]が60以上
 ◆〜決定キーを1秒以上押し続けた時の設定〜
 ◆
:それ以外の場合
 ◆〜決定キーを1秒未満しか押し続けていない時の設定〜
 ◆
:分岐終了
◆指定ラベルへ飛ぶ:1番




◎関連ページ
 ●イベントコマンド:キー入力の処理
 ○同時押しの処理
 ○自作キー待ち設定


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