テクニック集/無敵時間の作成方法と変数を用いたタイマー

Last-modified: 2012-12-08 (土) 00:45:02

敵と接触した際に発生する無敵時間の作り方です。これが無いと難易度がものすごい上ります。
併せて変数を用いたタイマーの使い方も説明します。通常のタイマーを使うと処理落ちに影響されなかったり、一つしか使えなかったりと色々不便です。

サンプルファイル

作り方

緑のアクティブオブジェクトが自機で、紫が敵機とします。
無敵時間説明.png
(フラグに名前を付ける方法は別ページ参照)

まず自機が敵機に衝突した時のイベントを作るのですが、条件は衝突一つだけでなく、無敵中か否かの内部フラグも加えます。
敵機と衝突した時にこのフラグが有効(=無敵中)ならこのイベントは発生しません。
無効だった時はライフを減らし、自機を点滅させ、無敵中フラグを有効にします。

無敵中フラグが有効の時、変数の無敵時間に1を加えます。
これはどういう事かと言うと、フラグが有効の間は毎フレームごとに変数が+1されます。デフォルト設定では1秒間に50フレーム存在するので、無敵中が1秒続けば変数は50になります。

無敵でいる時間が1秒で十分なら、変数無敵時間が50になった時に無敵中フラグを無効にし、無敵を終了させます。
ここで大事なのは変数無敵時間を0に戻すことです。これをしないと次に敵と衝突した時、無敵時間が50から開始され無敵が発生しません。
オブジェクトを表示することで、点滅は終了します。

コメント

  • 無敵時間をカウントダウン方式にすれば、場合によって無敵時間を変えられるし、「無敵時間が0でなければ無敵」とすることでフラグ無しでも実装できますよ。 -- 2012-12-08 (土) 00:45:02