ゲームをするにあたってユーザーの入力は不可欠です。その一つとしてキーボードがあげられます。
キャラクターの移動やコマンドの選択などなど。それを扱う関数がこちらになります。
アイワナでいうとキッド君の移動メニュー画面での選択などです。新しいボタンを追加したい時などに役立ちます。
キー入力をチェックするには、以下の関数を利用します。
keyboard_check(キー) 指定したキーコードが押されているかどうか返します。
例:
Createイベント
global.Up_key = vk_up // global.Up_keyに上カーソルキーのキーコードを代入する
global.Down_key = vk_down // global.Down_keyは下カーソルキーのキーコードを代入する
Stepイベント
if(keyboard_check(global.Up_key) == true){ y += -3 } // もし上カーソルキーが押されたら(x,y+3)する。
if(keyboard_check(global.Down_key) == true){ y += 3 }
keyboard_check_pressed(キー) 指定したキーコードが、直前のステップで押されたかどうか返します。
上の場合は押されてる間ずっと真になりますが、こちらは直前のステップで押されたステップだけ真になります。
keyboard_check_released(キー) 指定したキーコードが、直前のステップで離されたかどうかを返します。
※こちらも直前のステップで離されたステップだけ真になります。
keyboard_check_direct(キー) ハードウェア的に直接調べ、指定したキーコードが押されているかどうかを返します。また、キーをより詳しく判定します。
例:
if(keyboard_check_direct(vk_lshift) == true){ // もし左シフトキーを押したら
global.sneak = true // global.sneakを真にする
}else{ global.sneak = false } // それ以外は偽にする
キーボードの状態を変える関数を以下になります。
keyboard_get_numlock() numlock されているかどうかを返します。
keyboard_set_numlock(数字) numlock の状態を変更します。数字にはon(1)もしくはoff(0)を入れます。
keyboard_key_press(キー) 指定したキーが押されている状態にします。
例:
CREATEイベント
Timer = 0
global.Left_key = vk_left // global.Left_keyに左カーソルキーのキーコードを代入する
global.Right_key = vk_right // global.Right_keyに右カーソルキーのキーコードを代入する
STEPイベント
Timer += 1 // 変数Timerに1加算する
if(Timer >= 0 && Timer <= 100){ // もし、Timerが0以上100以下の時
keyboard_key_press(global.Right_key) // 右カーソルキーを押した状態にする
}
if(Timer >= 101 && Timer <= 200){ // もし、Timerが101以上200以下の時
keyboard_key_press(global.Left_key) // 左カーソルキーを押した状態にする
}
keyboard_key_release(キー) 指定したキーが離された状態にします。
keyboard_clear(キー) 指定したキーの状態をクリアします。 一度キーを離すまで、キーボードイベントの発生を止めます。
io_clear() キーボード、マウスの入力を全てクリアします。
io_handle() 入力を扱い、キーボードやマウスの状態を更新します。
keyboard_wait() キーボード入力があるまで停止します。
キーに使える仮想キーコードです。
英数字の仮想キーコードを利用する場合は
ord("Z") // Zキー
ord("4") // 4キー
この用に書きます。
例:if(keyboard_check_direct(ord("Z")) == true){ // もしZキーを押したら
instance_create(x,y,bullet) // bulletを(x,y)に生成する
}
以下の仮想キーコードはkeyboard_check_directのみで使える仮想キーコードです。
vk_nokey | 何も押されていない状態 |
vk_anykey | 何か押されていない状態 |
vk_left | 左カーソル |
vk_right | 右カーソル |
vk_up | 上カーソル |
vk_down | 下カーソル |
vk_enter | Enter |
vk_escape | ESC |
vk_space | Space |
vk_shift | Shift |
vk_control | Ctrl |
vk_alt | Alt |
vk_backspace | バックスペース |
vk_tab | TAB |
vk_home | HOME |
vk_end | END |
vk_delete | DELETE |
vk_insert | INSERT |
vk_pageup | PageUP |
vk_pagedown | PageDOWN |
vk_pause | ポーズ |
vk_printscreen | PrintScreen |
vk_f1 ... vk_f12 | F1〜F12 |
vk_numpad0 ... vk_numpad9 | テンキーの0-9 |
vk_multiply | テンキーの* |
vk_divide | テンキーの/ |
vk_add | テンキーの+ |
vk_subtract | テンキーの- |
vk_decimal | テンキーの. |
英数字の仮想キーコードを利用する場合は
ord("Z") // Zキー
ord("4") // 4キー
この用に書きます。
例:if(keyboard_check_direct(ord("Z")) == true){ // もしZキーを押したら
instance_create(x,y,bullet) // bulletを(x,y)に生成する
}
以下の仮想キーコードはkeyboard_check_directのみで使える仮想キーコードです。
vk_lshift | 左Shift |
vk_lcontrol | 左Ctrl |
vk_lalt | 左Alt |
vk_rshift | 右Shift |
vk_rcontrol | 右Ctrl |
vk_ralt | 右Alt |
最新コメント