ダッシュイベント4

同じ方向キーをダブルクリックの間隔で二度押すと、主人公がダッシュし
ダッシュしているときに、また同じように方向キーを二度押すと、主人公が歩くというものです。

このシステムは、同じ方向キーをダブルクリックの間隔で二度押すと、主人公がダッシュし
ダッシュしているときに、また同じように方向キーを二度押すと、主人公が歩くというものです。

用意するものは、コモンイベントを3つ、スイッチを2つ、変数2つです。

ではまず、イベントの内容から・・・。

コモンイベント1.ダブルプッシュ判定
 このイベントは、プレイヤーが方向キーを二回ダブルクリックのような感じで押し(ダブルプッシュ )たことを確認し
 2のイベントに「主人公を走らせろ」又は「主人公を歩かせろ」と命令を送る働き をします。」

コモンイベント2.速さ変更システム
 このイベントは1のイベントから送られてきた「主人公を走らせろ」や「主人公を歩かせろ」という命令を受け取り次第
 主人公の歩くスピードを速くしたり遅くするイベントです。

コモンイベント3.ダブルプッシュ間隔
 このイベントはダブルプッシュにおける一回目のキー入力から0.5秒以内に二回目のキーを押さない限り
 ダブルプッシュと認めないようにするイベントです、一回目のキー入力から、0,5秒たったら
 「時間切れだ」と1のイベントに伝え、1のイベントが2のイベントに「走らせろ」だの「歩かせろ」などの命令をさせないようにする働きがあります。

では、次に実際のコマンドの内容を・・・。

コモンイベント1
名前:ダブルプッシュ判定
開始条件:定期的に並列処理する
出現条件スイッチ:なし
イベント実行内容:
◆キー入力の処理:[0001:一度押し判定](キーが押されるまで待つ、方向キーのみ入力許可)
◆ラベルの設定:1番
◆イベントの呼び出し:速さ変更
◆スイッチの操作:[0001:時間切れ]をOFFにする
◆キー入力の処理:[0002:二度押し判定](キーが押されるまで待つ、方向キーのみ入力許可)
◆条件分岐:スイッチ[0001:時間切れ]がON
 ◆変数の操作:[0001:一度押し判定]代入,変数[0002:二度押し判定]の値
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
◆条件分岐:変数[0002:二度押し判定]がV[0001:一度押し判定]と同値
 ◆条件分岐:スイッチ[0002:ダッシュ中]がOFF
  ◆スイッチの操作:[0002:ダッシュ中]をONにする
  ◆
 :それ以外の場合
  ◆スイッチの操作:[0002:ダッシュ中]をOFFにする
  ◆
 :分岐終了
 ◆イベントの呼び出し:速さ変更
 ◆
:分岐終了

_______________
コモンイベント2
名前:速さ変更
開始条件:呼び出されたときのみ
イベント実行内容:
◆条件分岐:スイッチ[0002:ダッシュ中]がON
 ◆キャラクターの動作指定:主人公,移動速度アップ*5,移動速度ダウン*1
 ◆キャラクターの動作指定:飛行船,移動速度アップ*5
 ◆指定動作の全実行
 ◆
:それ以外の場合
 ◆キャラクターの動作指定:主人公,移動速度アップ*5,移動速度ダウン*2
 ◆キャラクターの動作指定:飛行船,移動速度アップ*5,移動速度ダウン*1
 ◆指定動作の全実行
 ◆
:分岐終了
◆注釈:小型船・大型船の移動速度変更がないのは、主人公と同じスピード
:  :だからです。これらの乗り物に乗っているときでも、この二度押し
:  :ダッシュシステムは正常に動作します。

_______________
コモンイベント3
名前:ダブルプッシュ間隔
開始条件:定期的に並列処理する
出現条件スイッチ:なし
イベント実行内容:
◆条件分岐:スイッチ[0001:時間切れ]がOFF
 ↓
 ◆ウェイト:0.5秒
 ◆条件分岐:変数[0002:二度押し判定]がV[0001:一度押し判定]以外
  ◆スイッチの操作:[0001:時間切れ]をONにする
  ◆
 :分岐終了
 ◆
:分岐終了

_______________
備考:
 必ずゲーム開始時に一度、スイッチ[0002:ダッシュ中]をOFFにしてください。
 そうしないと、このシステムは正常に動作しません。ご注意ください。
_______________
解説:
 イベントを組んで動作をするのはいいが、やはり仕組みが分からないと面白くないと思うので一応かいておきます。
 プレイヤーの立場で考えましょう。

コモンイベント1
名前:ダブルプッシュ判定
開始条件:定期的に並列処理する
出現条件スイッチ:なし
イベント実行内容:
↓プレイヤーが主人公に「歩け」と方向キーで命令を送ります。(方向キーが押され次第次へ進みます。)
◆キー入力の処理:[0001:一度押し判定](キーが押されるまで待つ、方向キーのみ入力許可)
◆ラベルの設定:1番
↓これは、飛行船の乗り降りの際、設定した速さとのずれを抑える働きをしています。
つまり、移動を始めるとき、ダッシュ中か、そうでないかで、歩くスピードを設定しなおすためのものです。
◆イベントの呼び出し:速さ変更
↓これよりコモンイベント3を発動させる命令。つまり、0.5秒のカウントダウンを始めなさい、という命令を送ります。
◆スイッチの操作:[0001:時間切れ]をOFFにする
↓ダブルプッシュの二回目のキー入力を待ちます。
◆キー入力の処理:[0002:二度押し判定](キーが押されるまで待つ、方向キーのみ入力許可)
↓二回目のキーが押された段階で、一回目のキー入力から0.5秒以内に二回目のキーが押されたかどうかを、ここで場合分けします。
◆条件分岐:スイッチ[0001:時間切れ]がON
 ↓0.5秒以上たっていた場合は、「時間切れ」ですので、
一度目に押したキーの記録は無効になります。
ただし、この段階で押されたキーが、ダブルプッシュにおける一回目のキー入力である可能性もあるため
このキー入力の記録をダブルプッシュにおける一度目のキー入力だと仮にみなします。
 ◆変数の操作:[0001:一度押し判定]代入,変数[0002:二度押し判定]の値
 ↓ここから、ダブルプッシュにおける一度目のキーが押された段階へ戻ります。
 ◆指定ラベルへ飛ぶ:1番
 ◆
:分岐終了
↓ダブルプッシュが確認された場合、つまり0.5秒以内に二回目のキーが押された場合
その二回目のキーが一回目のキーと同じ方向の、キーであるかを判断します。
(これは方向転換時のスピード変化を防ぐためです。)違う方向キーであった場合は最初に戻ります。
◆条件分岐:変数[0002:二度押し判定]がV[0001:一度押し判定]と同値
 ↓同じ方向のキーだと見なされた場合、今、主人公はダッシュをしているのか、していないのかを判断します。ゲーム開始時はスイッチがONにもOFFにもなっていないので、ゲーム開始時にこのスイッチをOFFにしてくださいね。
 ◆条件分岐:スイッチ[0002:ダッシュ中]がOFF
  ↓主人公が走っていなかった場合は、「主人公を走らせろ」という命令を送ります。
  ◆スイッチの操作:[0002:ダッシュ中]をONにする
  ◆
 :それ以外の場合
  ↓主人公が走っていた場合は、「主人公を歩かせろ」という命令を送りますます。
  ◆スイッチの操作:[0002:ダッシュ中]をOFFにする
  ◆
 :分岐終了
 ↓そして、命令どおりに速さを変更させます。
 ◆イベントの呼び出し:速さ変更
 ◆
:分岐終了

_______________
コモンイベント2
名前:速さ変更
開始条件:呼び出されたときのみ
イベント実行内容:
↓コモンイベント1から呼び出され次第速さを変更します。
↓コモンイベント1からの命令の種類によって場合分けをします。
◆条件分岐:スイッチ[0002:ダッシュ中]がON
 ↓「主人公を走らせろ」と命令された場合、移動速度を上げます。
 ◆キャラクターの動作指定:主人公,移動速度アップ*5,移動速度ダウン*1
 ◆キャラクターの動作指定:飛行船,移動速度アップ*5
 ◆指定動作の全実行
 ◆
:それ以外の場合
 ↓「主人公を歩かせろ」と命令された場合、移動速度を下げます。
 ◆キャラクターの動作指定:主人公,移動速度アップ*5,移動速度ダウン*2
 ◆キャラクターの動作指定:飛行船,移動速度アップ*5,移動速度ダウン*1
 ◆指定動作の全実行
 ◆
:分岐終了
◆注釈:小型船・大型船の移動速度変更がないのは、主人公と同じスピード
:  :だからです。これらの乗り物に乗っているときでも、この二度押し
:  :ダッシュシステムは正常に動作します。

_______________
コモンイベント3
名前:ダブルプッシュ間隔
開始条件:定期的に並列処理する
出現条件スイッチ:なし
イベント実行内容:
↓コモンイベント1から、カウントダウンの命令が出次第、以下の操作が行われます。
◆条件分岐:スイッチ[0001:時間切れ]がOFF
 ↓まず、0.5秒待ちます。
 ◆ウェイト:0.5秒
 ↓待ったら、ダブルプッシュが正しく行われたかを確認します。
 ◆条件分岐:変数[0002:二度押し判定]がV[0001:一度押し判定]以外
  ↓ダブルプッシュが正しく行われていなかった場合は、コモンイベント1に時間切れを知らせます。
  ◆スイッチの操作:[0001:時間切れ]をONにする
  ◆
 :分岐終了
 ◆
:分岐終了

_______________
備考:
 必ずゲーム開始時に一度、スイッチ[0002:ダッシュ中]をOFFにしてください。
そうしないと、このシステムは正常に動作しません。ご注意ください。