behavior(ふるまい・挙動)を加える
behaviorとは Construct 2 で提供される機能のひとつです。例えば、あるオブジェクトに Platform (プラットフォーム) behaviorを加え、さらに別のオブジェクトに床となるように Solid(ソリッド・固い) behaviorを加えることで、あっという間に横スクロールのプラットフォームゲームを作ることができるのです。同じ効果をイベント機能を使って実装することも可能ですが、手間がかかるうえ behavior で十分に機能するのでおすすめはしません。それでは、利用できる behavior にはどんなものがあるのかを見ていきましょう。数多く用意されていますが、代表的なものとして以下のようなbehavior がよく使われます。
- 8 Direction movement(8方向運動). 矢印キーでオブジェクトを動かす。プレイヤーの動きにもってこいですね。
- Bullet movement(弾運動). 今オブジェクトが向いている方向に対し、直線運動をする。プレイヤーの放つ弾に使えますね。少し変に感じるかもしれませんが、このbehaviorはオブジェクトをある方向に一定のスピードで動かすので、モンスターの動作にも使えます。
- Scroll to(~へスクロールする). オブジェクトの動きに合わせて画面がスクロールするふるまい (別名 scrolling(スクローリング))。 これもプレイヤーに利用できます。
- Bound to layout(レイアウトに捕らわれる). オブジェクトがレイアウトの外に飛び出してしまうのを防ぎます。これもプレイヤーが画面の外をうろつかないよう制限するのに使えますね。
- Destroy outside layout(レイアウトの外で破壊). オブジェクトがレイアウトの外に出ないようにするのではなく、外に出たら破壊してしまうようにします。弾に便利です。これを使わなかった場合、弾は画面から飛び出した後もなお、メモリーや処理能力といったシステム資源を無駄にしながら永遠に飛び続けることになってしまいます。これを使用することで、弾は画面から出た瞬間破壊されるようになります。
- Fade(フェード). オブジェクトを段階的に非表示にしていく。爆発に使う予定です。
ではこれらのbehaviorをオブジェクトに設定してみましょう。
behaviorを指定する
プレイヤーに 8 direction movement のふるまいを加えます。プレイヤーをクリックし、プロパティーバー内の Behaviors カテゴリーに注目してください。Add / Edit というリンクをクリックすると、プレイヤーのための Behaviors ダイアログが開きます。
ダイアログ上の緑色の 'add behavior' アイコンをクリックします。次に 8 direction movement をダブルクリックして完了です。
同じ手順で次は Scroll To のふるまいを加えてください。これで画面がプレイヤーに合わせてスクロールするようになります。レイアウトからはみ出さないように Bound to layout という behavior も同じく加えます。Behaviors ダイアログは下の図のようになっているはずです。
ダイアログを閉じて、実際にゲームを実行してみましょう。Run ボタンをクリックします。
HTML5 と互換性のあるブラウザーがすでにインストールされていない場合は、Firefox、Chrome, もしくはIE9以上(OSがVistaかそれ以上であるなら)の最新版をインストールしましょう。ゲームが実行され始めたら、すでに矢印キーでプレイヤーを動かせることにお気づきでしょうか?また、Bound to Layout のふるまいを設定したおかげで、プレイヤーはレイアウト内にとどまってくれます。この様に、Behaviors (ふるまい・挙動)を使って、よくある機能を簡単に実装することが出来ます。後ほど、イベントシステムを 利用してさらに機能をカスタマイズしていきます。
他のふるまいを設定する
他のオブジェクトに対しても同様の手順でふるまいを加えることができます。その手順とは、まずオブジェクトを選択し、 Add / Edit をクリックして Behaviors ダイアログを開き、一つまたは複数のふるまいを加えて完了、という流れです。ではさっそくやってみましょう。
- Bullet movement と Destroy outside layout を bullet オブジェクトに加えます(Bulletは弾のことなのでごく自然ですね)
- Bullet movement を モンスター オブジェクトに。 (モンスターたちも真っ直ぐに進みますからね)
- Fade のふるまいを explosion オブジェクトに加えます。 (そうすることで、イメージが現れた後、だんだんと消えていくようになります). ちなみに、Fade のふるまいは初期設定ではオブジェクトそのものも破壊してくれます。ですから、見えなくなったexplosionオブジェクトがシステム資源を消費し続けるような事態を自動的に回避できるので便利です。
ゲームを実行して気付いたかもしれませんが、モンスターたちはしばらくしたら画面の外に行ってしまいますね。もうちょっとのんびりと動いてもらうように変更しましょう。Monsterオブジェクトをクリックしてプロパティーバーを見てみると、 先ほどふるまいを加えたのでいくつか新たな項目が増えていることに気付くでしょう。
それらの項目でふるまいの微調整が出来ます。speed の項目を 400 から 80 に変更します。 (これは一秒間に移動するピクセルの数です)
同様に bullet の speed も 600に、さらに explosion の Fade 挙動にある Fade out time 項目を 0.5 (1/2秒)に設定しましょう。
さらにモンスターを増やす
コントロールキーを押さえながら、 モンスター オブジェクトをドラッグ&ドロップすると、新たに別の インスタンス(個別のもの) を作成できます。この新しいオブジェクトはモンスターという オブジェクトタイプ(型) をもとにした個別のオブジェクトだと理解できます。
オブジェクトタイプとはつまりオブジェクトの 'クラス' と同じ意味です。イベントシステムでは主にこのオブジェクトタイプを取り扱います。例えば、 "弾がモンスターに当たる"というイベントを設定した場合、実際はbulletオブジェクトタイプのインスタンスの一つと、モンスターオブジェクトタイプのインスタンスの一つとが衝突したということを意味しているのです。 - つまり個別のインスタンスに対してイベントを設定しているわけではないのです。スプライトに関して言えば、すべてのインスタンスが、元になっているオブジェクトタイプのテクスチャーを共有することになります。これはとても効率的な仕組みです。オンラインでゲームをプレイする際、もしモンスターの数が8匹だったとしても、一匹につきそれぞれテクスチャーをダウンロードするのではなく、Construct 2 は一回だけテクスチャーをダウンロードし、それを8匹全部に適用するからです。後でさらにオブジェクトタイプとインスタンスについて解説しますが、今理解しておくべきことは、例えばいくつかのモンスターの種類があったとして、さらにそれぞれの種類につき複数の個別モンスターがゲーム上に存在している時、それらの個別モンスターは所属する種類をもとにしたインスタンスに過ぎないということです。
では、コントロールキーを押さえながらドラッグ&ドロップして、7匹か8匹程度のモンスター をゲームに加えてください。プレイヤーからは離れた場所に置きましょう、そうでないとプレイヤーにすぐにやっつけられてしまいますからね。コントロールキー+マウスホイールでズームアウトにするとレイアウト全体にバランスよく散らばっているかどうかを確認できて便利です。下図のようになっていると思いまうす。
それではいよいよConstruct 2 が提供するビジュアルなプログラミング手法を使ってゲーム内容をカスタマイズしていきましょう。これはイベントシステムと呼ばれている仕組みです。