久しぶりにUnityの投稿でもいたします。
web向けのアプリ開発をしたくなりまして、
その中でキーを打つというアクションの処理が必要になりました。
要はAndroid向けで作ったタイピングアプリを、
web向けにも展開してみようかという魂胆でございまして、
その中でやっぱタイピングアプリなんだから、
パソコンの物理キーを使いたいよねと思いまして。
(つーかタイピングアプリをマウスでカチカチとプレイする意味がわからない…)
まぁそんなわけで、キー入力を認識するようにしたいんですよ。
で、候補にしたのが『Input』クラス?のやつら。
この辺なんて言えばいいのかな? Inputクラスでいいのかな?
ちなみに公式リファレンスはこちらですぃ。
http://docs.unity3d.com/ja/current/ScriptReference/Input.html
その中で恐らく『これ使えばいいよ!!』てのが、以下の3つ
- Input.GetKey
- Input.GetKeyDown
- Input.GetKeyUp
もうなんか字面見りゃどんなもんなのか想像はつくんですけどね…(;・∀・)
ただ、どういうわけかそれぞれどんな機能なのか、
はじめて説明文を読んだ時、さっぱり頭に入らなかったんですよ…(;・∀・)
なんでじゃ?(;・∀・) 最近理解力が目に見えて落ちている気がします…健忘症か?(;・∀・)
まぁそんなわけで、以下の様なスクリプトをUpdate内に組み、
動作検証をおこなってみることにいたしました。
// Update is called once per frame
void Update () {
//動作検証ッ!!!
if(Input.GetKey("a")){
Debug.Log ("Input.GetKeyだよっ(`・ω・´)");
}
if(Input.GetKeyDown("a")){
Debug.Log ("Input.GetKeyDownだよっ(・∀・)");
}
if(Input.GetKeyUp("a")){
Debug.Log ("Input.GetKeyUpだよっ(´・ω・`)");
}
}
めっちゃ単純だぜ…(;・∀・)
本職の人からしてみればなんと腐ったコードだこりゃ…(;・∀・)
さてこのコードは、キーを押した時、
どのタイミングで検知するかを調べるためのコードです。
ようは、各命令文が検知したタイミングで、それぞれデバックプリントが行われます。
これを使って、各関数がどのタイミングでTrueになるのかを知ろうという魂胆です。
こらそこッ。無駄な努力とか言うな(´・ω・`)
とりあえず、ちょっと色々なシチュエーションでやってみました。
まずは、”a”のキーを暫くの間押しっぱなしにした後に離した場合の結果。
なるほど。どうもInput.GetKeyさんは、押しっぱなしに対応しているようです。
『押してる間はずっとTrueを返す』ってかんじですかね。
GetKeyUpとGetKeyDownはそれぞれカウントが1ですねぇ。
『おしっぱ』てのは言い方を変えると『1回押した』と同じなので、
GetKeyUpとGetKeyDownは押した回数とかに使えそうです。
次に、10回押して離したところで、ストップしてみました。
ほほーう。さきほどのおれの推論は間違ってないようですな(`・ω・´)
10回押したらキチンとKeyDownもKeyUpも10回カウントしてますね。
では最後に、10回押した後、そのままキーをおしっぱの状態でストップします。
まぁ名前そのまんまって感じっすよね(;・∀・)
GetKeyDownは、単純に『押した瞬間』だけTrue,
Get KeyUpは、その逆で『押して離した瞬間』だけTrueという具合ですわ。
まぁそんなわけで、各関数の動き方が実感出来ました。
とりあえずタイピングのアプリは押し間違いを許容するシステムですし、
キーを押したら押した瞬間に正誤を判別させたいので、
Input.GetKeyDownをメインに使っていこうかなと(`・ω・´)
まぁいいブログのネタが出来たわと思って、
『説明読めばいいじゃん…(´・ω・`)』と半分思いながらの投稿でした。
ハッハッハッ☆
…………もういや(´・ω・`)