どうも、Master.typeXです。
ココ数日疲れて倒れてたり頭痛が痛かったりして
なかなかパソ子を起動させる気力が若干失せておりました。
あっふん。
今回の講座はCF2.5のつまづきポイント
高速ループとなります。
覚えてしまえば便利ですよ奥さん。
第五回:「高速ループ」
「高速ループ」とはCF2.5の機能の一つで
ループ名を付けて指定した回数イベントを実行する。
と、言うものなのだが・・・文字じゃわからんわな。
CF25_kouza_v500.zip (108.22kB)
ダウンロード
なので、今回も講座MFAを覗きながら
ひとつひとつ見てみましょ。
高速ループの基本的な使い方
新規アクションの「特別」(歯車アイコン)から使います。
で、先程のように数式エディタで
名前と回数を指定し、今度は条件で
先程名付けたループ名を条件にすることで
そのイベントを回数分実行します。書き方的にはこんな感じです。
ちなみにこの書き方をすると
アクティブの変数Aにはフレーム開始時に1しかたされませんが
高速ループを回した方は変数Bに1を足すを30回行うという処理になります。
とにかく、名付ける→回数指定→それを条件としたイベントを作る。
コレが一連の流れとなります。
ループインデックスの取得
高速ループの基礎的な使い方の一つとして
「ループインデックス」を条件としたイベントです。
数式エディタの「特別」から「高速ループ」「ループインデックスの取得」で
ループ回数を取得します。
ただ、ループインデックスを条件とするには
「特別」の2つの一般値を比較を使います。
これは上の数式と下の数式の結果を比較して条件とするものです。
かなり便利なコマンドなので覚えておきましょう。
で、この場合は「ループ3」のインデックスが「0」の時
という条件になります。
それから、ループインデックスは
0から始まるためそこだけは注意です。
なので、30回回すと0~29を返すという結果になります。
後述する各ループも同様です。
各ループ(ForEach)
高速ループは非常に便利なものですが
オブジェクトの個数分普通に高速ループしても
どのオブジェクトがどのインデックスなのかわからないのである。
そこで使うのが各ループ(ForEach)です。
これはオブジェクトの個数分、指定した名前のループを回すのは同じなのですが
こっちはちゃんとインデックスを取得する方法があり
主にオブジェクトを特定するという使い方をします。
ただ、こちらは「特別」からループを使うのではなく
「ループを回したいオブジェクト」から「カウント」
そして「各ループ」を選択します。
ループインデックスの取得も同様です。
こちらもインデックスは0から始まっていますが
インデックスの開始は一番新しいオブジェクトから始まります。
なので、古しいオブジェクトになると一番大きい番号になります。
古しい方から始まるには工夫が必要となります。
高速ループを使ったイベント例
講座用MFAに2つほど載せておりますが軽く解説します。
クリックすると増えるオブジェクト
簡単な使い方で「オブジェクトをクリックする」条件を使い
その条件が満たされるとループを3回回してオブジェクトを
ランダムな位置に3つ生成するというものです。
そんな面倒なことしなくてもいいんじゃね?
と、思われそうなので向こうに失敗例も置いてあります。
オブジェクトの生成の後に生成したオブジェクトに対するイベントは
こんな感じに書いても実はうまくいかず
左上にイベントが重なって出来てしまいます。
なぜそうなるかはよくわかってない。(それでいいのか)
でも、とりあえず同じイベント内で複数制作せずに
高速ループを利用したりCF2.5+ならば子イベントを利用するなりしましょう。
ループインデックスを方向に使う
これはよく使われると思われる方法。
CF2.5の方向は0~31までの32方向で指定できます。
(ベクターならば0~360度まで・・・だと思う)
なので32回ループすれば講座用MFAのように
全方位に弾を発射することができるようになります。
方向の指定方法は「方向を変えたいオブジェクト」→「方向」
「方向を選択...」でいかの表示が出たら「1+1」のアイコンを押して
数式エディタを開くことで指定できるようになります。
32以上はどうなるかよく覚えてない。(おい)
とまあ、こんな感じでザックリと説明してみました。
この高速ループ、今後もちょいちょい出てくると思うので
その時はココやMFAを覗いて復習しておいてくださいまし。
次回は・・・次回は・・・
思いつかん!
(ダメじゃねーか)