FC2ブログ
--------

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2014-08-06

【ウディタ】キー入力について2

どうも。
お久しぶりです。リルです
4ヶ月前にずいぶん興奮気味で記事にした「ウディコン」がすでに開催しています!
ウディコンとは僕がゲーム製作に使用しているソフト「ウディタ」のゲームコンテストのことです
通称:ウディコンなわけです。

まぁ、いったんウディコンの話は置いときます。
ずいぶん長引いてしまいましたが、前回の記事のキー入力について詳しく解説したいと思います。
キー入力のことがよくわからない人は、前回の記事を見てくださいね

ウディコン用のゲームを製作していてブログを更新できなかったのですが、確か議題は「一つの変数で基本キーと特定キー両方を取得できるようにする」とかだったような気がします。

そしてヒントとして「キーを離したかどうか監視する」みたいなことを書いた記憶があります。

実際には一つの変数で基本キーと特定キーの両方を取得することはできないわけですが、
それに似たような処理は作れるということで実践してみたいと思います。

まず、基本キーと特定キーを入力待ちにチェックを入れずに二つ取得しておきます。
キー入力1

ではもし、この時二つとも入力待ちにチェックを入れたとするとどうなるかやってみましょう
このような処理にしてみます。
キー入力2

この場合、決定キーを押したときにデバッグ画面に決定と文字が出れば成功
また、Aキーを押したときにデバッグ画面にAと文字が出れば成功です。

ちなみにデバッグとは作った処理が正しく実行されているか確認することをいいます。
ではやってみましょう。

まずは、決定を押してみてデバッグの反応をみます
キー入力3

はい。このようなデバッグになります。何も反応していないことがわかりますね。
これはAキーを押しただけでも同様です。同じコモン内に二つの入力待ちの変数を作ってしまうと
反応してくれなくなります。実はたまに反応するんですけど、これではゲーム操作になりませんよね。

ですが、僕はどうしても基本キーと特定キーを一つのコモンで取得したいのです。
しかし、入力待ちにチェックを入れないとキーを一回押したら一度のみ実行するということができません。
なので入力待ちなしで、キーを一回押したら一度のみ実行するということをしなければなりません。
そのためにはキーを離したか監視すればできるといいました。

ですがそもそも、キーを離すとはどういうことなのでしょうか。
これについて解説します。

キーを離すということはどういう状態になることかについてです。
まず、キーを押している間の変数に入力されている値を確認します。
先ほどの二つの変数で基本キー特定キーを入力待ちなしで取得している画面にて、
決定キーを押しっぱなしにした場合のデバッグを見てみますね。

この処理の状態で・・・
キー入力4

決定キーを押しっぱなしにすると・・・
キー入力5
このようにデバッグは決定を表す値10が連続して入力されます。

このまま押しっぱなしだった決定キーを離すと・・・
キー入力6

このようなデバッグになります。
いままで10を取得していた変数は0の値になるんですね。
つまりキーを離すということは押していたキーの値が0になるということなんです。

この10が0に変わった瞬間決定キーを離した瞬間なわけです。

これは決定キー限らずどのキーでも離すと値が0になります。
もともとキーを押していない状態が0なんですね。

では、どのようにキーが0になる瞬間を監視するか?
キーが0になる瞬間を監視するというのはキーを離したかどうかを監視する。これをもう少し具体的にいうと、「キーを押してる間はそれ以外の処理を実行しない」ということなんです。
これは、キーを押している間はキーを離したかどうかにのみ集中するということでもあります。
一つの事柄に集中できる便利な処理があります。

それは「ループ」です。

ループをしている間はそのループ内の処理にのみ集中しますよね?
これを利用します。

ループをするタイミングはキーを押した瞬間。
ループを中断するタイミングはキーを離した瞬間です。
ループしている間に押しているキーを離したかどうか。
決定キーの場合、10だった値が0になったかどうかを確認し続ければいいわけです。

そんなかんじの処理がこちらです。
キー入力7


薄い青で囲われている部分がループ内の処理になります。
この形ならば、入力待ちがなくても一回押したら一度きりの処理が可能になります。

別の変数をこんなふう並べちゃっても・・・(コモン行数内に収まらなかったのでコメント文は消してます。サーセン)
キー入力8


デバッグではちゃんと決定キーを押したときは決定。Aキーを押したときはAと一回きり表示してくれます。

【決定キーを押したとき】
キー入力9
【Aキーを押したとき】
キー入力10

ここまで、長い文章を見てくださった方。お疲れ様です。
長文失礼いたしました。

ですが、実はこの処理にはまだ欠点があります。
長押し」に対応していません。

入力待ちの場合でも、決定キーやキャンセルキーは長押しできないんですが、矢印キーは長押しに対応しているんですね。
しかし、この処理はどの場合でも長押しができません。

この記事は長くなってしまっているので、いつか長押しに対応できる処理も紹介したいと思います。
といってもこの処理をいじることで長押しもできるようになります。
みなさんも挑戦してみてください。
ではでは。
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

プロフィール

リル

Author:リル
どうも。
ウディタでゲ製してます。
リル(lilL)と申します。
リンクフリーですが、報告いただけるとありがたいです。
現製作中→「Animal Time」
Twitter : https://twitter.com/lilL76725976
Youtube : https://www.youtube.com/channel/UCZu
9eYaYrfBkzgUX1Msaajw

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
訪問感謝します!
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。