親子の自動リンク ガイド
はじめに
Clickteam Fusion 2.5 のガイドへようこそ! 本ガイドに記載されている情報の一部は、Multimedia Fusion 2 でも利用できます。 PDF 形式のチュートリアルやガイドはご自由に印刷してお読みください。 お好きな時間にご自身のペースで読み、学習していただけます。
本ガイドについてのご意見、ご感想をお待ちしております。 学習者のレベルに合わせたガイドを個別に作成するのではなく、初心者から中級、上級者まですべてのレベルの方が同じガイドで同じ目標を達成できればと考えております。
1. 親-子オブジェクトとは
Clickteam Fusion 2.5 では、オブジェクトの 「対」 を作成することができます。 同じイベント内で 2つのオブジェクトを一緒に作成すると、それらはエンジン内で自動的に親と子の 「ペア」 になります。
これは例えば、ヘルスバーを持つ敵が数多く画面上に存在している場合などに大変便利です。 ヘルスバー (子) は常に正しい敵(親) のものを表示する必要があるはずです。
本ガイドでは、こういった親子関係について解説します。 効率的なゲーム/アプリ製作にお役立てください。
本ガイドではあなたご自身で用意したグラフィックを使ってもかまいませんし、もちろん Clickteam Fusion2.5 に用意されているライブラリからのグラフィックを使用することもできます。
2. 動作領域の設定
まずはじめに動作領域を設定します。 新規アプリケーションを作成してください。ライブラリツールバーを確認します。

ローカルライブラリ -> Games-> Army -> Army - Dark Green から DSoldier1というオブジェクトを見つけてください。 お使いの製品により、別の名前のフォルダに存在したり、オブジェクトの名前や色が異なる可能性があります。DSoldier1 を動作領域にドラッグして追加してください。 下図のような感じです。

DSoldier1 のプロパティを変更する必要がありますので、クリックします。
まずは、プロパティのランタイムオプションタブで、「開始時に作成」 のチェックをはずしてください。 親-子オブジェクトとして、イベントエディタから手動で作成する必要があるためです。

続いて、挿入メニュー -> 新規オブジェクトを選択して、カウンター オブジェクトを挿入します。 カウンター オブジェクトを挿入したら、こちらも同様にプロパティで 「開始時に作成」 のチェックをはずします。
さらにプロパティの設定タブで、種類を 「水平バー」 に変更して、色を緑に変更します。
下図のように最小値や最大値も設定します。 カウンター オブジェクトのサイズは、プロパティのサイズ/位置タブで適当に変更してください。
これでだいたい動作領域は設定できましたが、もう一つあります。 DSoldier1 というオブジェクトに新しい変数を与えます。 これはDSoldier1 の 「ヘルス」 の値になります。 DSoldier1 オブジェクトをクリックし、プロパティの値タブで、変数の 「新規作成」 ボタンをクリックします。変数 A が作成されたら名前をダブルクリックして 「ヘルス」 という名前に変更します。

さらにオブジェクトに動作を設定しましょう。 バウンスボールに設定して、速度を 15 にします。
下図のように設定できたでしょうか。

ここまでの作業で、敵キャラクター (DSoldier1)、ヘルスバーを追加し、それぞれに正しいプロパティや値を設定しました。しかしながら、ここで今アプリケーションを起動しても何も起こりません。 敵キャラクターすら画面には表示されません。 それでは、フレームエディタでの作業を終了して、イベントエディタに移りましょう。
3. イベントの作成
イベントエディタではいくつか簡単なイベントを作成する必要があります。 キーボードのスペースバーを押したら、画面上のランダムな位置に敵キャラクターが作成される、というイベントを考えてみましょう。同時に、敵と一緒にヘルスバーを表示し、敵が動けばそれと一緒になってヘルスバーも動くようにします。
まずは、ユーザーがスペースキーを押したら DSoldier1 を作成し、 動作領域内のランダムな場所に配置する、というイベントから作成します。

条件を作成したら、新規オブジェクトを作成 のセルを右クリックして オブジェクトを作成を選択します。 続いて DSoldier1 を選択し、オブジェクトを作成ダイアログでは座標を 0.0 に、レイヤーを 1に設定します。

OK ボタンをクリックしてダイアログを閉じます。 続いて同じイベント行で、新規オブジェクトの作成 のセルを右クリックし、今度はカウンターオブジェクトを作成します。
オブジェクトを作成ダイアログでも同様に設定します。 以上の設定を終えたら、 DSoldier1 のセルを右クリックし、位置 -> X 座標を変更...を選択して、数式エディタの入力欄に、 64+Random(575) と入力します。

数式エディタは下図のようになります。
OK をクリックしたら、 Y 座標も同様に変更します。 DSoldier1 のセルを右クリックし、位置 -> Y 座標を変更... を選択して、数式エディタの入力欄に、 64+Random(400)と入力します。
X 座標、 Y 座標共、 64 という値を使用したのは、キャラクターを動作領域内に必ず作成するようにしたいためで、動作領域の境界から最低限離すために必要な値が、このインスタンスの場合は64 だったということです。
以上で基本的なところは完成しました。 後はこれに付け加えていくだけです。 敵オブジェクトとヘルスバーを作成し、オブジェクトはランダムな位置から開始されます。
それでは、 DSoldier1 オブジェクトが動作領域から出そうになったらバウンスして、領域内に留まるように境界を設定しましょう。新しい条件をクリックして、 DSoldier1 を右クリック、位置 -> DSoldier1 の位置を判定 を選択します。 位置を判定ダイアログでは動作領域から外に向かう上下左右の矢印をクリックしてOK をクリックします。 続いて下図のように DSoldier1 のセルを右クリックして、動作 -> バウンス を選択します。

これによって敵キャラクターが領域外へ出ることを防ぎます。
F8 を押してアプリケーションを実行してみましょう。
スペースバーを押す度に新しい敵キャラクターが画面上のランダムな位置に作成されます。 しかしながらヘルスバーは表示されませんし、敵キャラクターと一緒に移動もしません。
ここでいよいよ 親-子オブジェクトの自動リンク機能の出番です。 新しいイベントを作成します。
新規条件を作成し、特別オブジェクトを右クリックして、常に実行 を選択します。 カウンターオブジェクトのセルを右クリックし、位置 -> 位置を選択...を選択します。

位置を選択 ダイアログが表示されます。 DSoldier1 オブジェクトをクリックし、小さな四角をキャラクターの頭の上あたりにドラッグして移動します。

これによって、カウンターは現在の DSoldier1 の位置から X 座標で -26、 Y 座標で -55 離れた場所に常に位置することになります。OK ボタンをクリックしてダイアログを閉じます。
続いて同じイベント行でカウンター オブジェクトのセルを右クリックし、カウンターをセット を選択します。 数式エディタが表示されます。 カウンターは DSoldier1 のヘルスを表示させたいので、DSoldier1 を右クリックし、値 -> 値 A から M ->ヘルスを読み出し を選択します。

OK をクリックして数式エディタを閉じます。
さて、さきほど DSoldier1 を作成した際に、それに対して開始時のヘルスは設定しませんでした。 したがって現在のヘルスは0 です。 DSoldier1 を作成したイベント行に戻って、 DSoldier1 のセルを右クリックし、変数 -> 変更 を選択します。 数式エディタで 100 と入力して OK をクリックします。

したがって、スペースバーを押した場合、DSoldier1 とヘルスバーを作成し、 Dsoldier1 のヘルスは 100から始まります。

3 つ目のイベント (上図) では、カウンターは常にDSoldier1の上に表示され、ヘルスバーの値は DSoldier1 の現在のヘルスの値になります。
最後に、 DSoldier1 にダメージを与えるためのイベントがあれば完成になります。 「ユーザーがオブジェクトをクリックする」という条件の新しいイベントを作成しましょう。

左ボタンのシングルクリックで、オブジェクトをクリックするダイアログが表示されたら DSoldier1 を選択して OK をクリックします。
イベント行が作成されたら、 DSoldier1 オブジェクトのセルを右クリックし、変数 -> 減少する を選択します。

数式エディタが表示されたら 10 と入力します。 OK ボタンをクリックしてダイアログを閉じます。
以上で、マウスで DSoldier1 をクリックする度にヘルスが 10 減るようになりました。
さて、いよいよ最後のイベントです。 DSoldier1 のヘルスが 0 になったら、破壊する というものです。 早速作成しましょう。変数と比較する条件を持つイベントを新規に作成します。 新しい条件 をクリックしたら、新規条件ダイアログで DSoldier1 を右クリックし、変数 -> 変数の 1 つと比較 を選択します。 数式エディタが表示されたら、比較方法で以下 を選択し、 0 と入力します。

OK ボタンをクリックしてダイアログを閉じます。 作成したイベント行で DSoldier1 オブジェクトのセルを右クリックして破壊 を選択します。
F8 を押してアプリケーションを実行してみましょう。 スペースバーを押すとランダムに敵キャラクターが現れ、ヘルスバーは常にキャラクターの上に表示されます。そしてキャラクターをクリックする度にヘルスが減ります。 ヘルスが 0 になると、キャラクターは消滅 (破壊) されます。

4. まとめ
本ガイドでは、親子関係のようにオブジェクトをペアにする方法をご紹介しました。 2 つのオブジェクト同じイベント内で作成されれば、それらは自動的にペアとなり、その後のイベント、条件、数式でもその関係は続きます。
2 つのオブジェクトが同一のイベント内で作成されなければ、それらは自動的にペアにはなりませんので、手動で行う必要があります。特にゲーム開発においては、親子関係を利用すると、大変な時間と労力の節約になります。
覚えておいて損はありません。
Clickteam Fusion 2.5 では、ある結果を得るための方法は 1 つに限定されません。本ガイドでは、それらのうち、最も一般的かつ簡単で効果的と思われる方法をご紹介しますが、方法はそれだけだけではない、ということを頭の片隅に留めておいてください。
本ガイドは、ゲームであれ、アプリケーションであれ、 Clickteam Fusion 2.5 を使って開発を行おうとお考えの方に、知りたいことを丁寧に説明することを目指して作成いたしました。