イルリッヒたん@Wiki
イベント関連3
最終更新:
匿名ユーザー
-
view
キーイベントについて
<Version 0.12.0>
キーイベントの詳細みたいなもの。
KeyInput.PressedDown
キーが押されていればtrue 、放されていればfalse 。
キーイベントはキーを押した時だけではなく、放した時にも発生するので、このフラグで押されたか放されたかを判別する。
「放された」を検出するようにすれば、タメ撃ちとかを実装できる。
キーイベントはキーを押した時だけではなく、放した時にも発生するので、このフラグで押されたか放されたかを判別する。
「放された」を検出するようにすれば、タメ撃ちとかを実装できる。
KeyInput.KeyとKeyInput.Charの違い
KeyInput.Keyには押されたキーのキーコードが入る。
KeyInput.Charには押されたキーの文字コードが入る。
KeyInput.Charには押されたキーの文字コードが入る。
Key | Char | |
[1](フルキー) | 0x31 | 0x31 |
[1](テンキー) | 0x61 | 0x31 |
[!](フルキー) | 0x31 | 0x21 |
上は押されたキーと取得できる値の関係を表にしたもの。
フルキー[1]とテンキーの[1]の場合、それぞれは別々のキーなのでKeyInput.Keyには別々のキーコードが入る。
しかし、どちらのキーも入力される文字は同じ"1"なのでKeyInput.Charには同じ値が入る。
フルキー[1]とフルキー[!]の場合は、押されたキー自体は同じなのでKeyInput.Keyには同じ値が入る。
しかし、入力される文字が違う為それぞれ"1"と"!"が入る。
フルキー[1]とテンキーの[1]の場合、それぞれは別々のキーなのでKeyInput.Keyには別々のキーコードが入る。
しかし、どちらのキーも入力される文字は同じ"1"なのでKeyInput.Charには同じ値が入る。
フルキー[1]とフルキー[!]の場合は、押されたキー自体は同じなのでKeyInput.Keyには同じ値が入る。
しかし、入力される文字が違う為それぞれ"1"と"!"が入る。
KeyInput.ControlとKeyInput.Shift
KeyInput.Control が[Ctrl]に、KeyInput.Shift が[Shift]に対応していて、押されていればtrue に放されていればfalse になる。
これを利用すれば、[Ctrl]や[Shift]と他のキーの同時押しを処理できる。
これを利用すれば、[Ctrl]や[Shift]と他のキーの同時押しを処理できる。
……と思ったらそんなに甘くなかった。
というのも、[Ctrl]や[Shift]も通常のキーとして入力されるので、例えば[A]キーを押した状態で[Shift]を押すと、得られるのは[A]キー+KeyInput.Shift(true)ではなく、[Shift]キー+KeyInput.Shiftなってしまう。
逆に、[Shift]を押した状態で[A]キーを押した場合は、[A]キーのコード+KeyInput.Shift(true)で同時入力になる。
というのも、[Ctrl]や[Shift]も通常のキーとして入力されるので、例えば[A]キーを押した状態で[Shift]を押すと、得られるのは[A]キー+KeyInput.Shift(true)ではなく、[Shift]キー+KeyInput.Shiftなってしまう。
逆に、[Shift]を押した状態で[A]キーを押した場合は、[A]キーのコード+KeyInput.Shift(true)で同時入力になる。
KeyInput.ControlとKeyInput.Shiftは放された時点でfalseになる(イベント発生の時点で既にfalse)、そのためKeyInput.PressedDown と組み合わせて、「放された」の検出は出来ない。