Construct 2 初心者向けガイド

1

Index

Tagged

Stats

34,216 visits, 52,070 views

Tools

Translations

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 30 Jan, 2015. Last updated 25 Feb, 2019

イベントについて

まずは上の方にある Event sheet 1 と名付けられたタブをクリックして、イベント・シート・エディター を開きましょう。. イベントをリストにまとめたものを イベントシート と呼びます。ゲームの様々な部分に対してイベントシートを作ったり、イベントを纏めて整理したりするのに利用できます。イベントシートは別のイベントシートを"含む" ことも可能なので、一つのイベントシートを異なる階層で再利用することも可能ですが、今回はこのテクニックは使用しません。

イベントとは?

空のイベントシートに明記してある通り、Construct 2 は 一回の tick の度にイベントシート全体を実行します。一般的なモニター装置は毎秒60回リフレッシュ(画像の書き換え)をしますから、出来るだけなめらかに描画されるように、Construct 2 そのタイミングに合わせようとします。これはつまり、イベントシートの内容は一秒間につき大体60回ほど実行され、その度に画面に新しい画が描画されるということになります。つまり Tick とは "イベントシートを実行・描画する" 最少のユニットを指すわけです。

シート上のイベントは上から下に向かって順番に実行されます。シートの一番上のイベントがまず最初に実行されるというわけです。

Conditions(コンディション・条件), actions(アクション・動作) and sub-events(サブイベント)

イベントはまず コンディション で始まります。コンディションは例えば"スペースキーが押されているか" っといったような条件のことです。全ての条件が揃っている場合に限り、"弾オブジェクトを作成する" っといったような アクション が実行されます。アクションが実行された後、もし設定されているならば、サブイベントが実行されます - そこでもさらにコンディションの判定が行われアクションが実行されます。その次にまたさらにサブイベントが設定されているかもしれません。このシステムを利用して、高度に機能的なゲームやアプリケーションを構築することが可能ですが、このチュートリアルではサブイベントは必要ありません。

もう一度おさらいしましょう。簡単にまとめると、イベントは以下のように実行されます:

条件はすべて満たしているか?

---> イエス: このイベントのアクションを全て実行する。

---> ノー: 次のイベントに進む (サブイベントは無視されます).

これは少し簡略化しすぎてしまったかもしれません。というのも、Construct 2 は後で必要になるかもしれないさらに多くの機能を提供しているからです。ただ上記のように大雑把に理解しておくのは悪いことではありません。

はじめてのイベント

それではプレイヤーが常にマウスのある方向を向くようにしましょう。設定がすべて完了したら以下のようになるはずです。

こころで、画面がリフレッシュされるたびに tick が起きるのを覚えていますでしょうか? 毎 tick の度にプレイヤーがマウスの方を向くようにすることで、マウスを動かしていてもプレイヤーは常にその方向を向くようになるわけです。

まず最初にイベントを作ります。イベントシートの空白のどこかをダブルクリックしましょう。すると コンディション(条件)condition を指定するように求めてきますね。

オブジェクトは種類によって出来ることが違いますから、設定できるコンディションとアクションも異なります。また、Construct 2 には、もともと備わっている機能を指して System(システム) オブジェクト、というオブジェクトが存在します。このシステムオブジェクトを ダブルクリック しましょう。ダイアログが開いて、システムオブジェクトに適用できるコンディションが全て表示されます。

Every tickダブルクリック することでイベントを挿入できます。ダイアログが閉じ、イベントが新たに作られました。でもアクションはまだ何もない状態です。 以下の様になっているはずです。

次に、プレイヤーがマウスの方を向くようにアクションを設定します。イベントのすぐ横にある Add action リンクをクリックします。(クリックするのは、action を加えるリンクの方です。すぐ下にある event を加えるリンクと間違えないように気を付けましょう。イベントの方のリンクを押してしまったら場合は、まったく別の新しいイベントが作成されてしまいます)。今度は Add Action ダイアログが表示されます。

イベントを加えた時と同様に、今回もオブジェクトのリストから選ぶことになりますが、イベントではなく action のためのオブジェクトだということを理解しましょう。コンディションを加えることとアクションを加えることを混同しないように気を付けましょう。マウスの方向を見るようにさせたいオブジェクトはプレイヤーですから、下図で示すように、Player オブジェクトをダブルクリック します。すると、プレイヤーオブジェクトに適用可能なアクションのリストが表示されます。

すでに設定してあるプレイヤーの 8-direction movement というふるまいに対しても、特別なアクションが適用できるのにお気づきでしょうか? それらは、今回は使いませんので気にしなくてもいいです。

プレイヤーの向くべき角度ですが、度数を指定するよりも Set angle towards position(ポジションに向かって角度を設定) アクションを使うとより簡単です。このアクションは、プレイヤーの位置から、指定されたX座標とY座標に対しての角度を自動的に計算して適用してくれます。Set angle towards position アクションをダブルクリックしましょう。.

すると、Construct 2 がプレイヤーが向くべきXとYの座標を要求してきますね

これらの項目を、アクションのパラメーターと呼びます。実はコンディションもパラメーターを取るものがありますが、今設定しているEvery tick コンディションにはパラメーターがありません。

プレイヤーがマウスの方を向くようにしたいので、角度を計算するために必要な値はマウスのXとYの座標になります。 XYのテキストボックスにそれぞれ Mouse.XMouse.Yと入力します。今入力したものを expressions(エクスプレッション・表現)と呼びます。例えば合計を求める式と同じようなもので、ここでも仮に Mouse.X + 100 もしくは sin(Mouse.Y) といった値を使うこともできます(この例はあまり役には立ちそうにありませんが・・・)。 表現を使うことで、アクションやコンディションに渡すパラメーターを、他のオブジェクトから取得したり、動的に計算で求めたりできるわけです。かなり強力な機能であり、Construct 2 の持つ隠れた柔軟性の一つなのです。

Did you get an error that said "Mouse is not an object name(Mouseはオブジェクト名ではありません)"?というエラーが返ってきた場合は、Mouse オブジェクトが既に挿入されていることを確認しましょう。2ページ目に戻って "インプットオブジェクトを加える"の手順を参考にしてください。.

ところで表現の書式についてですが、いったいどうやってそれらを暗記すればいいのだおう・・そう思っているところではないでしょうか?大丈夫です、ダイアログより少し上の位置に "オブジェクトパネル" というダイアログが半透明状態で表示されているのがお分かりでしょうか。作業の邪魔にならないように普段は半透明になっています。

マウスをオブジェクトパネルの上に移動させるか、クリックしてみましょう。普通の状態で表示されるようになりましたね。これは表現をマスターする助けになるように、辞書のように使いながら説明を読んだり出来ます。 オブジェクトをダブルクリックすると、そのオブジェクトで利用できる表現が全てリスト表示されます。さらに表現をダブルクリックすると、プロジェクトに自動的に挿入されるのでキーボードでタイプする手間が省けます。

パラメーターダイアログの Done ボタンをクリックしてダイアログを閉じましょう。これでアクションの設定は完了しました!下の図のようになっているはずです。

最初のイベント作成が完了しました。ゲームを実行してみましょう。プレイヤーは以前と同じように動きまることが出来ますが、さらにマウスの方向を常に向くようになっているはずです。 ささいなものですが、これはゲーム機能のカスタマイズの記念すべき第一歩でした。

  • 0 Comments

Want to leave a comment? Login or Register an account!