物理エンジン ガイド

はじめに

Clickteam Fusion 2.5 のガイドへようこそ! 本ガイドに記載されている情報の一部は、Multimedia Fusion 2 でも利用できます。 PDF 形式のチュートリアルやガイドはご自由に印刷してお読みください。 お好きな時間にご自身のペースで読み、学習していただけます。

Clickteam Fusion 2.5 では、ある結果を得るための方法は 1 つに限定されません。本ガイドでは、それらのうち、最も一般的かつ簡単で効果的と思われる方法をご紹介しますが、方法はそれだけだけではない、ということを頭の片隅に留めておいてください。

本ガイドは、ゲームであれ、アプリケーションであれ、 Clickteam Fusion 2.5 を使って開発を行おうとお考えの方に、知りたいことを丁寧に説明することを目指して作成いたしました。

本ガイドについてのご意見、ご感想をお待ちしております。 学習者のレベルに合わせたガイドを個別に作成するのではなく、初心者から中級、上級者まですべてのレベルの方が同じガイドで同じ目標を達成できればと考えております。

物理オブジェクトの紹介

Clickteam Fusion 2.5 の最大の特徴は、物理オブジェクトの追加です。 物理エンジン (Box2D) は、メインのClickteam Fusion 2.5 ランタイムにほとんど内蔵されています。 これは、上級ユーザーやプロの方々には大変嬉しいニュースでしょう。 ゲームのコンセプトに物理概念を持ち込むことができ、さらにそれをあらゆるプラットフォームへエクスポートできるようになったわけです。

また物理動作を利用することによって、これまでとは全く異なるタイプのゲーム作成が可能になりました。 その可能性は無限と言えるほどです。

Angry Birds のようなゲームを作りたい方も、真にユニークなゲーム作りを目指す方も、 Clickteam Fusion 2.5 の物理エンジンを使えば夢ではありません!

物理制御エンジン

物理 - 物理制御エンジンオブジェクトは、物理ベースアプリケーションを動作させるために必須のオブジェクトです。 このオブジェクトには、オブジェクトを物理法則に則って動作させるために必要なコードが含まれています。オブジェクトに物理動作を設定する場合には、必ずこのオブジェクトを使用する必要があります。 また、このオブジェクトには、物理ワールドのオブジェクトを制御するためのアクションも数多く用意されています。

フレームに物理 - 物理制御エンジンオブジェクトを追加しないと、物理動作は利用できません。

物理 - 物理制御エンジンを追加して初めて、フレーム内のワールドを制御することが可能になります。 例えば、重力の強さや角度を設定、変更、適用したり、摩擦や密度、弾力性、重力適用率などのプロパティを個々のオブジェクトに適用することができます。

さらに、物理 - 物理制御エンジンと従来の動作 (非物理動作) は共存可能です。 例えば、プラットフォーム上を左右に移動するだけの敵を物理ワールドに組み入れて、他のオブジェクトと相互作用させることができます。

また、オブジェクト同士を結合する 「ジョイント」 も作成可能で、距離ジョイント、回転ジョイント、直動ジョイントが利用できます。

さらに、ほとんどのエクステンションで数多くのリアルタイム数式 (現在の重力の強さ、減衰、オブジェクトの速度など) を利用可能です。

詳しくは今後リリース予定のガイドでご紹介いたします。 それでは、本ガイドの本編に入って、いくつかの基本的なオブジェクトを見ていきましょう。

内蔵物理動作の使用

前項でご説明した通り、まずは、アプリケーションを新規作成し、フレームに物理 - 物理制御エンジンオブジェクトを挿入します。動作領域の内でも外でも構いません。 挿入 -> 新規オブジェクト を選択して、新規オブジェクトの作成ダイアログを表示し、物理 - 物理制御エンジン をダブルクリックします。 カーソルが十字に変わったら、どこか動作領域の外側をクリックします。

物理制御エンジン

続いて、アクティブオブジェクトを挿入します。 新規にアクティブオブジェクトを挿入し、ピクチャエディタで 32x32 ピクセルの"箱" を作成します。

アクティブオブジェクト-箱

上図のように 32x32 ピクセルの "箱" (外枠 1 ピクセル、内部は青で塗りつぶし、対角線 2 本) を作成したら、ホットスポットを表示アイコン (目のアイコン) をクリックし、続いてG アイコン をクリックします。 これにより、ホットスポットが質量中心に自動的に配置されます。画面上に表示されるホットスポットを画像の中心に配置する必要はありません。 Clickteam Fusion 2.5 では、ピクチャエディタで G アイコンをクリックするだけで自動的にホットスポットを質量中心に配置できます。

続いて、"箱" が落ちる "地面" を作成します。 それには別のオブジェクトを挿入します。今回は、クイック背景オブジェクトです。 下図のように平べったい形に変更して、境界線の幅を 1 に設定し、動作領域の下部に配置します (色もグリーンに変えています)。

クイック背景-地面

完成したら、この "地面" を右クリックして 作成 -> アクティブオブジェクト を選択します。

作成-アクティブオブジェクト

カーソルが十字に変わったらフレーム内をクリックします (透過色を選択ダイアログでは OK をクリック)。 さきほど作成したクイック背景オブジェクトの"地面" から、アクティブオブジェクトの "地面" が作成されました。 クイック背景オブジェクトの "地面"を削除して、それがあった位置にアクティブオブジェクトの "地面" を配置してください。 このアクティブオブジェクトの "地面"についても、さきほどの "箱" と同じようにピクチャエディタを開いて、ホットスポットを質量中心に設定します。 設定後、"地面"の位置がずれたら正しい位置に配置し直してください。 ここまで完成したら続いて、"箱" と "地面" のプロパティを設定します。

ここでは "箱" と "地面" のプロパティを設定し、物理制御エンジンがそれらをどのように扱うか、どれが"箱" でどれが "地面" でそれらが物理ワールドでどのように動くのかを決めていきます。

最初に "地面" から設定します。 "地面" のアクティブオブジェクトをクリックし、プロパティを確認します。動作タブをクリックし、種類で、物理動作の 物理 - 背景 を選択します。

物理 - 背景

選択後、設定可能なプロパティがいくつか増えます。 ほとんどのプロパティは変更する必要はありませんが、障害物を なし から 障害物 へ、当たり判定の種類判定を矩形に に変更してください。 続いて "箱" です。"箱" をクリックしたら、プロパティの動作タブで物理動作の 物理 - 静止 を選択します。

こちらもほとんどのプロパティは変更する必要はありません (後で自由に変更できます) が、当たり判定の種類判定を矩形に に変更し、回転処理をより高精度に のオプションを有効にしてください。

障害物 - 物理 - 静止

さて、以上で物理ワールドの設定はほとんど完了ですが、ここまで一つのイベントも作成していませんし、数式も使っていません。 ましてやコードを書いたりもしていません。これが Clickteam Fusion 2.5 の素晴らしいところです。

では、キーボードの F8 を押して、アプリケーションを実行してみましょう。 "箱" はあたかも自然界の物理法則に従うように、重力に引かれて落下します。ただし、 "箱" は "地面" をすり抜けてしまいます。

さぁ、次ページからはさらに面白いことが始まりますよ。

イベントエディタで基本的な物理設定を適用

このガイドで作成しようとしているのは、ゲームではありません。 Clickteam Fusion 2.5 で利用可能な物理オブジェクトの使い方を学ぶだめのサンプルのようなものです。"箱" をクリックして、プロパティのランタイムオプションタブを選択し、開始時に作成 オプションを無効にします。 これにより、アプリケーションの開始時に"箱" は自動的に作成されません。 今回は、イベントエディタを使って、ユーザーが "箱" を自分で作成できるようにし、"箱"が空から降ってくるような感じにします。 それではイベントエディタに移りましょう。

新規に条件を作成します。 新しい条件 をクリックし、新規条件ダイアログで マウスポインタとキーボード オブジェクトを右クリックして、マウス -> クリックする を選択します。 クリックする ダイアログで、左ボタンシングルクリックを選択して OK をクリックします。

イベント-マウスクリック

この条件が作成されたら、下図のように、新規オブジェクトを作成アイコンの下のセルを右クリックしてオブジェクトを作成 を選択します。

イベント-クリック-作成

"箱" のアクティブオブジェクトをクリックして OK をクリックします。

作成-アクティブオブジェクト

続いて、オブジェクトを作成する位置を選択するダイアログが表示されます。 ここでは、どこに設定してもかまいません。 この後作成するアクションでここで設定した位置は、マウスの位置に代わります。 つまり、クリックした場所にオブジェクトが作成されるようになります。OK ボタンをクリックしたら、同じ条件行の "箱" のセルを右クリックし、位置 -> X 座標を変更 を選択します。

イベント-座標

数式エディタが表示されたら XMouse と入力して (もしくはマウスポインタとキーボード アイコンを右クリックして マウスの現在の X 座標 を選択して) OK をクリックします。 同様に同じセルを右クリックして、位置 -> Y 座標を変更を選択し、数式エディタで YMouse と入力して OK をクリックします。 ここまでできたら、ファイルを保存してアプリケーションを実行 (F8) してみましょう。 画面上のどこをクリックしても、そこに "箱" が作成されるはずです。

さて、ここまでの作業で、マウスの左クリックでいくらでも "箱" を作成できるようになりました。 ただ、作成した"箱" は依然として "地面" をすり抜けてしまいます。 "箱" を "地面"に落下させるためには、オブジェクト同士の衝突について設定する必要があります。 そのための条件を新規に作成しましょう。 "箱" オブジェクトを右クリックして、衝突 -> 背景 を選択します。

条件-衝突-地面

この条件を作成したら、下図のように、"箱" オブジェクトの下のセルを右クリックして、動作 -> 停止 を選択します。

イベント-衝突-停止

ここで一つ注意です。 この条件は、オブジェクトを (速度的に) "停止する" という意味ではありません。ここで意図しているのは、"箱" が地面に衝突した場合、衝突地点で "箱" を止めるという意味であって、減速するという意味ではありません。重力は常にかかっており、"箱" が "地面" と衝突する角度によっては、"箱" はその後も移動する可能性があります。ただし、今回の地面は平坦なものですので、現時点ではこれは問題になりません。

F8 を押してアプリケーションを実行し、適用にマウスをクリックして、いくつか "箱" を作成してみましょう。どの "箱" も "地面" と衝突すると停止します。 でも、"箱" 同士は衝突せず、お互いに重なっています。

ここでまた条件が必要になります。 "箱" が他の "箱" と衝突したら、動作を停止する、という条件です。これによって "箱" 同士が重なることはなくなります。

ではこの条件を新規に作成しましょう。 "箱" が別の "箱" と衝突すると、動作を停止する。

条件-衝突-その他

作成したら、 F8 を押してアプリケーションを実行してみましょう。 適当にクリックして "箱" を数多く作成します。"箱" が落下する位置によって、現実世界で起こるような動きが見れるはずです。 これを作成するのに使用したのは、たった 3 つのイベントと 5 つのアクションだけです。

以上で、本ガイドは終了です。 おつかれさまでした。 この後は他のオブジェクト (例えばボールなど) も追加してみてください。

その場合、オブジェクトのプロパティで当たり判定の種類を 判定を円形に に設定するとよいでしょう。また他の物理オブジェクトも追加してみてください。