オブジェクトの可変変数への代入方法を考える
MMF2 の「通し番号」というのはオブジェクトが保持する可変変数( Alterable Values )に対する「連番代入」機能です。オブジェクトの数が 10 個なら 10 個のオブジェクトの変数 A ~ Z のいずれかに対して、MMF2 のオブジェクトが持つ内部番号が若い順に「連番」を発行・それを代入します。要するに変数に対する一括代入機能なので似たような処理を Lua のコンソールで出力すれば以下のように表現できます。
MMF2 のこの暗黙のループ処理を「アクションループ」と呼びます。「アクションループ」を使えば一括して乱数を代入したり、変数群に一括して同じ値を代入できます。
通し番号を工夫しよう
ところで連番といえば普通は「 1、2、3..」ですが、この連番を場合によっては「 3、2、1 」としたい場合や、「 0、1、0、1 」とかしたい場合はどうしたら良いでしょうか。
「逆順」については前回記事でも触れました。
まず通し番号を普通に振ってから、次にオブジェクト総数に通し番号の開始数を足し算して、足した値から実際に割り振られた通し番号を引き算してあげれば「逆順」が求められます。
(オブジェクト総数+連番開始数) - 通し番号 = 逆順
「 0、1、0、1 」については算術演算子の「 Mod (剰余演算 = 割り算の余りだけを示す記号)」を使います。これも先に変数には通し番号をあらかじめ振っておきます。次に変数に割り振られた通し番号に対して 例えば 1 Mod 2 とすれば、通し番号が奇数の時に余りは常に 1 、偶数の時は 0 となります。通し番号を開始時に 0 から振れば「 0、1、0、1 」となり 1 から開始すれば「 1、0、1、0 」となります。
実際の使用例
「変数への代入と判定」をテーマにしたサンプルを色々作ってみました。全 7 種類。
処理が不十分でおかしな動作をする部分もありますが、変数への代入と活用方というテーマで作られたサンプルなので至らない部分はどうぞご容赦くださいませ。難易度の低いものはイベントで 10 行とか 20 行程度です。
難易度 | スクリーンショット | 内容説明 | Download |
---|---|---|---|
上級? | イベントが約 90 行近くあり、変数の使い方もやや複雑。特徴は複数の「識別番号」を利用してオブジェクト動作を指定している点。一つのオブジェクトが「識別番号 = 通し番号」を 3 つ持っていて、3 つの識別番号を切り替えながら動作も切り替えていきます。フラグや変数管理専用のアクティブオブジェクトを一個使っています。オートデモなので見てるだけ。ブラウザ用にJavaでも出力。 | ||
中級 | 画像の利用規約を確認したらダメっぽいので画像だけ別にダウンロードしてください。画像をダウンロードしなくても一応筆者がトレパクした絵が付いてるので品質以外はご安心?本来使いたかった画像はgary@pixelpressicons.com.からIcons: Typewritersにあります。ピクチャオブジェクトが外部参照している同名の画像ファイルを差し替えるだけで簡単にビジュアルをアップグレードできます。 | ||
中級 | オブジェクト動作の Widget 化を意識した作りになっているサンプル。オブジェクトイベントを使って通し番号を切り替えると複数オブジェクト動作も同時に切り替わります。 | ||
簡単? | 某動画に影響されたサンプル。アクションループ使えば固定値も一括して代入できます。要「 Surface Object 」。 | ||
簡単 | 要「Select Object」です。日本語版 MMF2 でも問題なく使えるようにしてくれたエクステンション作者さんに感謝。このサンプルでは変数にランダム値を代入し、代入した値から一番高い値を検出します。 | ||
簡単 | 高速ループをちょっとだけ使っています。あとは接触判定後、変数に特定の値を入れて条件一致したものを破壊すれば地面が掘れる、というもの。Javaでも出力 | ||
簡単 | 一番簡単なサンプル。通常の通し番号に逆順を適用。 |
>>次のページ