LoginSignup
2
2

More than 5 years have passed since last update.

GameMaker:Studio 一定時間ごとに呼び出される Alarm イベント

Posted at

GameMaker Studio で移動するキャラの向きを一定時間ごとに変更したいと思いました。
(GameMaker Studio Professional Edition v1.4.1757)

2016-09-11_1657.gif

上の動画は、歩行するゾンビキャラが 1 秒ごとに 90 度単位でランダムに向きを変えています。

最初は、[Step] イベントの呼び出しでメンバ変数に
self.frame_count += 1;
のようにフレームカウントを更新していき、その余剰(mod)を計算しようかと思っていました。

Alarm イベントの設置

しかし GameMaker Studio のオブジェクトには、指定したステップ数が経過したときに呼び出される Alarm と呼ばれるイベントが標準で用意されています。
room_speed が 30 の場合なら、1 秒間にゲームサイクルが 30 ステップ実行されるはずなので、 30 を指定することでおよそ 1 秒後に [Alarm] イベントを呼び出すことができます。
2016-09-11_160314.png

Alarm を呼び出させたいオブジェクトの Properties ウィンドウを開いて、 [Add Event] ボタンを押し、 [Alarm] ボタンを押すと0~11 までの 12 個のアラームをイベントに追加できます。

あとは、他のイベントと同様に、 Action を割り当てます。

Alarm イベントはインスタンスごとに設定できる

この12個の Alarm はオブジェクトのインスタンスごとに設定できます。

最初に Alarm を呼び出したいステップ数を設定します。
[Execute Code] Action を使う場合は、

Event_Object_Create_1
self.alarm[0] = room_speed * 1; // 1 秒後に Alarm0 イベントを呼び出す。

のように記述します。
私は、 [Create] イベントの中にこのような設定をしました。

Alarm イベントは一度きり

Alarm イベントは繰り返し呼び出されません。
もう一度呼び出したい場合は、 [Alarm] イベントの中に次のように再度設定します。

Event_Object_Alarm0_1
self.alarm[0] = room_speed * 1; // 再び 1 秒後に Alarm0 イベントを呼び出す。

サンプルの実装

最初にご覧いただいた動画のサンプルは room に obj_zombie_a(ゾンビのスプライトを割り当てたオブジェクト)のインスタンスを 3 つ配置したものです。

obj_zombie_a には次の 3 つのイベントを設定しました。
2016-09-11_170114.png

[Outside Room]イベントはインスタンスが Room の外側にいった場合のイベントで、反対側から再びでてくるように [Wrap] アクションを both で設定しています。
他の2つのイベントは [Execute Code] アクションを指定して次のコードを書きました。

Create イベントのコード

Event_obj_zombie_a_Create_1
self.image_speed = 0.3; // スプライトのアニメーションの速度
self.image_index = 0;   // 最初に表示するスプライトのフレーム番号
self.speed = 1;         // 移動速度
self.alarm[0] = room_speed * 1; // 1 秒後に Alarm0 イベントを呼び出す。

Alarm の設定のほかに、スプライトのアニメーション、インスタンスの移動速度を設定しました。

Alarm0 イベントのコード

Event_obj_zombie_a_Alarm0_1
self.direction = 90 * round(random(4)); // インスタンスの向きをランダムに変更
self.alarm[0] = room_speed * 1; // 再び 1 秒後に Alarm0 イベントを呼び出す。

Alarm の設定のほかに、向きを90度単位でランダムに変更しました。
余談ですが、 random は小数を返すため round で整数に丸めないと 90 度以外の向きにも変わるようになります。

参照

1.The Alarm Events
1.room_speed
1.image_speed

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2