任意のキーを押したときに弾を発射したい
押しっぱなしにしたらいい感じの間隔でオート連射にしたい
obj_player > ステップ
if keyboard_check(ord("V")) { instance_create_layer(x + sprite_width, y + (sprite_height / 4), "Instances", obj_player_bullet) }
keyboard_check(ord("V")) という組み合わせで、キーボードの"V"キーが押されているかどうかを判定できる。
TRUEであれば、instance_create_layer で obj_player_bullet というオブジェクトを生成してRoomに追加する。
obj_player > ステップ
if keyboard_check(ord("V")) { if instance_number(obj_player_bullet) < 4 { instance_create_layer(x + sprite_width, y + (sprite_height / 4), "Instances", obj_player_bullet) } }
instance_number 関数にオブジェクトを引数として指定すると、そのオブジェクトがRoom上にいくつ存在するかを返してくれる。
例では4つあるかどうかを判定し、4つ以下であればインスタンスを生成するようにしている。
まず obj_player に対してアラームを追加しておく(自動採番なのでアラーム0とする)
アラームは1フレームにつき1減算していって、0になったらスクリプトを実行するという仕組みの模様。
アラームに対してもスクリプトを設定できるが、今回はアラームをタイマーとして扱いたいだけなのでスクリプトには何も設定しない
obj_player > ステップ
// obj_player.alarm[0] → アラーム0のフレームカウントが0になっていればVキーを入力したとみなす。 if keyboard_check(ord("V")) && obj_player.alarm[0] <= 0 { if instance_number(obj_player_bullet) < 4 { // 8フレーム後にアラートが有効になるが、今回は8フレーム経過したかどうかのタイマーとして扱う obj_player.alarm[0] = 8 instance_create_layer(x + sprite_width, y + (sprite_height / 4), "Instances", obj_player_bullet) } }