縦スクロールシューティング20

敵に動作をつける

アクティブオブジェクトに動作を付ける方法は複数あります。公開したサンプルでは全部自力で定義したカスタム動作を作って統一したので敵の動作には一切「クリックチーム動作コントローラー」を使っていませんが、実は「クリックチーム動作コントローラー」を使えばかなり楽に動作定義をすることができる場合があります。特に直線系の動きは「方向」さえ割り出せれば動作コントローラーを利用すると楽です。・・・というわけでサンプルではいままであえて触れなかった「クリックチーム動作コントローラー」について触っていきましょう。

標準動作は一番最初「静止状態」から始まる

標準動作は一番最初「静止状態」から始まる

「動作コントローラー」へはアクティブオブジェクトのプロパティ「アクティブタブ」からアクセスします。初期状態だと静止状態が選択されています。ちなみに「初期方向」が設定できるので「静止状態でも初期方向は選択できる」は覚えておいてください。

動作コントローラーから選択できる動作一覧(R251日本語版)

動作コントローラーから選択できる動作一覧(R251日本語版)

直線系の動作だとよく使われるのが「バウンスボール」とか「ベクター」だと思います。バウンスボールは動作がイメージしやすいと思うので説明は割愛。でも一応動作サンプルはこんな感じになります。サンプルを見ていると「ピンボール動作でもいいんじゃね?」と思うかもしれませんが、ピンボール動作はピーキーすぎて筆者には無理です。だから今回は「バウンスボール」か「ベクター」が楽で良いのです。実際に「ベクター」でスライムに直線移動な動作を当てはめてみます。

「ベクター動作」でスライムに動作を付けた例

「ベクター動作」でスライムに動作を付けた例



SWFによるエクスポート例。ベクターの設定はデフォルトからすこし弄ってあります。まず時間経過とともに加速を付けたく無かったので「重力/加速」の設定から「強さ」「方向」をゼロにしました。そして「初期方向と速度」の設定から「速度」を50にして初期方向を「270=真下へ」としました。ちなみに初期方向をゼロのままにすると右へ流れて行ってしまいます。こんな感じで比較的直感的に動作定義できるのがベクターの良さです。バウンスボールも似たことはできますが、あちらは方向ではなく「アングル(日本語版の訳だと「角の数」)」という概念なので最大で32までしかバリエーションがありません。それに対してベクターは「360度」で設定できるから三角関数を用いて発射角(方向)を割り出せればシューティングの弾の発射なんかにも応用できます。

参考URL:MMF2で作ってみる
各種シューティングの弾幕などが動作サンプルとして提供されています

デフォルト状態のベクターの設定

デフォルト状態のベクターの設定

「クリックチーム動作コントローラー」はエクステンションでもあります。だからアクティブオブジェクトのプロパティからアクセスもできるし、イベント中にエクステンションを経由して設定を動的に変更も出来ます。

エクステンションとして動作コントローラーを追加する

エクステンションとして動作コントローラーを追加する


エクステンションとして追加するとベクターはイベントとアクションでMMFアプリケーションの実行中にも細かい設定ができます。
イベントからベクター動作の設定

イベントからベクター動作の設定

次回はクリックチーム動作コントローラについてもうちょい詳しく