イベントに対する理解力を深めましょう。既存のイベントに手を加えたり、
自ら作っていくうちに、徐々にイベントコマンドなど、多くの事が学べるでしょう。
前の章で作成した場所移動イベントは、「簡単イベント」で作成したものでした。
この簡単イベントは全て、よく使うイベントの雛形です。
よって、項目の中、特に「実行内容」を見ることで、基礎的なイベントの作り方が分かります。
そこでまずは、簡単イベントを作成し、その中を解析しながら、イベントの基礎を学ぶことにします。
最初に、前の章で作成した「場所移動」の中を確認しましょう。
ここで「場所移動」というイベントコマンドが追加されているのが分かります。
場所移動は、イベントコマンドのキャラクター>移動>場所移動で選択可能です。
簡単イベントで作られた場所移動には、他にもふたつのイベントコマンドが設定されています。
任意のイベントコマンドを設定すると、隣にウィンドウが現れ、選択中のコマンドの詳細が設定可能です。
これは今後、実際にイベントを作りながら学んでいきます。
イベント編集モードにし、宝箱を置きたい座標で右クリックし、簡単イベント>宝箱 の順に設定します。
まずはここで、宝箱の見た目と中身を選択します。
これでマップ上に宝箱が配置されました。
●ページ 1
ヒエラルキーの(マップ名)>イベントに、新たに赤枠で囲んだイベントが生成されます。
2ページで構成されたイベントであることが分かります。これは、ページ1が宝箱を開ける前、ページ2が開けた後、空になった状態です。
この時点ではイベントに名前がありません。黄色枠で囲った部分に、「宝箱1」などの名前を付けましょう。
ページ1 のイベント実行内容を見ます。緑枠で囲った部分で、宝箱を開ける際には、向きを変更させることで、少しずつ開くアニメーションを行います。
このように、宝箱はの画像は、原則として、「段々開いていく様子を上下左右に割り当てる」という手法で素材が作成されています。
さて、ここで「セルフスイッチの操作」という項目が出てきました。セルフスイッチの詳細は後述します。
●ページ 2
ページ2の出現条件は、セルフスイッチがAであることのため、ここで、画像がページ2(開けた後の状態)に、見た目が切り替わります。
注意が必要なのは、ここで切り替わるのは、画像のみで、イベント実行はページの内容の実行が終わるまで続くということです。
これは、実行中に条件が切り替わったり、マップが切り替わったりした場合などでも同様です。
たとえ、他のイベントが実行条件を満たした場合でも、その実行内容は、現在のイベント実行終了後に始まります。
セルフスイッチとは、特定のイベント内だけで参照されるスイッチです。他のイベントでは参照の必要のない場合に使います。
通常、作成中のプロジェクトが多くなると、必然的に使用するスイッチの数も増えます。
一方、セルフスイッチは、通常のスイッチとは完全に独立しているため、管理しやすく、
使用するスイッチの数の削減にも役立ちます。宝箱は、まさにその恩恵を一番受けやすいでしょう。
セルフスイッチは、ひとつのイベントにつき、A~Dの4つが準備されていますが、大抵の場合、これで事足りるでしょう。
宝箱の場合、「開けたかどうか」の判定だけで十分なので、Aのみを使います。
イベント実行内容にある、他の項目について解説します。
簡単イベントで作られた宝箱の最初の行に「MEの演奏」という項目があります。
MEは、Music Effectの略で、一旦BGMを停止し、演奏される効果音です。
演奏が終了すると、自動的にBGMが再開されます。
主に、ファンファーレなどに使われます。
次は簡単イベントから「宿屋」を選択します。
このような場面が現れるので、人物画像および宿泊代を入力します。
配置されたイベントの実行内容を見てみましょう。
図の赤枠で囲った部分です。ゲーム画面上に選択肢を表示し、プレイヤーに選択を促します。
ここでは、「はい」「いいえ」の2択ですが、選択肢の名前は変更可能です。また、その他多くの機能を持ちます。
図の緑枠で囲った部分です。この宿屋では、宿泊に必要なお金をパーティーが所持しているかどうかで分岐を行っていますが、 それ以外の様々な分岐条件が設定可能です。
ゲーム中の様々なゲームデータを参照し、条件が満たされているかどうかを判定可能です。一例を挙げます。
文章の表示の設定を行います。メッセージウィンドウには、最大4行まで、メッセージを表示することが可能です。
また、名前用のウィンドウを表示することも可能です。
赤枠で表示された「文章の表示」イベントのインスペクタを見てみましょう。
緑枠で囲まれた部分で、「名前」と「名前の表示をするか」が選択可能であること、顔アイコンやピクチャの表示が設定可能であることが分かります。
これらは、必須の項目なのですが、よく使う場面では、自動設定が可能です。
制御文字は文字の直前に決められた記述を入力することで、文字を装飾することができたり、表示のタイミングを変更したり、
ゲーム内の情報に自動置換してくれたりする機能です。
\V[n] | 変数 n 番の値を表示する |
\N[n] | アクター n 番の名前を表示する |
\P[n] | パーティーメンバー n 番の名前を表示する |
\G | 通貨単位を表示する |
\C[n] | 以降の文字色を n 番の色に変更する |
\I[n] | アイコン n 番を表示する |
\{ | 文字サイズを 1 段階大きくする |
\} | 文字サイズを 1 段階小さくする |
\$ | 所持金ウィンドウを表示する |
\. | 文章の表示中に 1/4 秒間ウェイトする |
\| | 文章の表示中に 1 秒間ウェイトする |
\! | 文章の途中でボタンの入力待ちをする |
\> | 以降の同じ行にある文字を一瞬で表示する |
\< | 文字を一瞬で表示する効果を取り消す |
\^ | 文章表示後の入力待ちを行わない |
\\ | バックスラッシュ(または円記号)を表示する |
\PX[n] | 行の文字位置をnピクセル分、横にずらす |
\PY[n] | 行の文字位置をnピクセル分、縦にずらす |
\FS[n] | フォントサイズをnサイズにする |
なお、「\」記号は、「\記号の半角」で表示される場合と「¥記号の半角」になる場合があります。
このふたつは、環境によって見え方が異なるだけで、どちらも意味は同じですので、覚えておきましょう。
「画面のフェードアウト」で画面を暗転し、その後「画面のフェードイン」で画面を元に戻します。
宿屋のイベントでは、フェードアウト中に宿泊中のMEを演奏し、5秒間(300フレーム)暗転した後に、画面を元に戻しています。
その他、主な利用方法を挙げます。
ここまでで、イベントとは大まかに、どういうものであるかの基礎的な部分が理解できたと思います。
次は、実際にイベントを作成、編集することで、より理解を深めましょう。
イベントを新規に作成し、1から設定を行いましょう。
まず、前回同様、ヒエラルキーの「マップ編集」を右クリックし、「イベントの新規作成」を選択し、イベント編集モードにします。
この状態で、イベントを配置したい座標を右クリックし、「新規作成」を選択します。
上記で説明した以外に、ヒエラルキーの該当マップのイベント項目をクリックするだけでも、イベント編集モードに切り替えることが可能です。
作成されたイベントのページ1 のインスペクタを確認しましょう。
主要要素の一部については、イベントの基礎で説明しています。
ここでは、ここまで説明を行ってこなかった要素を、解説します。
上記で作成したイベントをもとに、編集を行っていきましょう。
話しかけるとメッセージを表示する人物を作成します。
今回は、プレイヤーキャラが話しかけるイベントなので、イベントの位置は、プレイヤーが通行可能な場所に設置します。
もし、座標を変更したい場合、イベントの任意のページの基本設定>位置 にて、座標の変更を行ってください。
また、イベントの座標変更を行うには、ドラッグ&ドロップを行うことでも可能です。
今回は、「画像」の「キャラクター」を、0002:ミゲル にします。
それ以外の初期設定は変更せずに、イベントを作成していきます。
トリガーが0001:決定ボタン になっているのを確認します。
「イベント実行内容」にイベントコマンドを追加するには、右クリックを行い、「イベントの新規作成」を選択します。
なお、複数のイベントコマンドの間にイベントコマンドを挿入する場合、イベントコマンドを選択してからこの処理を行うと、
指定したイベントの上に新たなイベントコマンドが作成されます。
イベントコマンドのリストが」表示されるので、イベントコマンドを選択し、設定を行います。
ここでは、メッセージ>文章の表示 を選択します。
イベント内容にコマンドが追加され、「イベントコマンド」の詳細設定ウィンドウが表示されます。
今回は、イベントキャラをミゲルにしたので、赤枠の「キャラクター指定」で0003:ミゲル を選択します。
これにより、名前や、名前ウィンドウや顔アイコン、およびピクチャの表示が自動設定されます。
黄色枠の「顔を表示する」か「ピクチャを表示する」のうち、前者を「する」にします。両方とも「する」には出来ません。
イベント実行内容の「文章」にて、「こんにちは。」と表示します。
画面右上のアイコンのうち、赤丸で囲った部分で、プロジェクトのセーブを行い、緑枠で囲った部分でテストプレイを開始します。 作成したイベントキャラに話しかけて、文章が表示されるのを確認しましょう。
以前に「簡単イベント」で作成した宝箱のイベント実行内容を編集します。
イベントコマンドは、任意の位置に挿入することが可能です。挿入したい位置の直後にあるイベントコマンドを選択し、そこで「イベントの新規作成」を行います。
まず「文章」を選択し、右クリックして「イベントの新規作成」を選択します。
イベントコマンドから、キャラクター>フキダシアイコンの表示 を選択し追加します。
イベントコマンドのインスペクタで、赤枠のキャラクターを「このイベント」に変更します。
主に、一連のイベントシーンを作成する際に、特定のキャラの感情を表示するのに役立ちます。
他の利用法としては、「文章の表示」の前に、話者に吹き出しアイコンを表示することで、マップ上の誰が話しているのかが分かりやすくなります。
宝箱から入手できる金額を任意のランダムに変更しましょう。
図の赤枠が、今回変更した箇所です。
以上、テストプレイを行い、実際に宝箱を開けてみましょう。
●金額は500から2000の範囲で、実行する度に変わる
変数には、様々な値を入れることが可能です。一番使用頻度が高いのは、特定の数値や、別の変数の値などの代入です。他の一例を挙げます。
ここまでの解説をもとに、宿屋に機能を追加しましょう。特定のアクターがいる場合、顔パスで無料で宿泊可能にします。
以上が完了したら、テストプレイを行いましょう。
ID1番のアクターがいる時、ただで宿泊可能になることを確認しましょう。
このコマンドを行うと、イベントを中断し、残りの「イベント実行内容」を行いません。
ただし、イベントから後述するコモンイベントを呼び出し、コモンイベントの中で「イベント処理の中断」を行った場合は、呼び出したイベントに処理が戻り、続きを実行します。
一連のイベントコマンドを、コピーし、任意のイベントにペーストすることが可能です。
イベントコマンドを選択、右クリックして「イベントのコピー」を行います。
Shiftキーを押しながら、一連の複数のイベントコマンドを選択することも可能です。
選択したイベントコマンドは、任意のイベントに「イベントの貼り付け」でペーストすることが可能です。
後述するコモンイベントにもペースト可能です。
それでは、実際に様々なイベントを作ってみましょう。
イベントやプレイヤーキャラの強制移動は、イベントコマンド キャラクター>移動>移動ルートの指定 で、行うことが可能です。
「移動ルートの指定」のインスペクタはこうなっています。
まず、「キャラクター」は 0002:このイベント、「移動の種類」は 0001:ルート指定 にします。
この際、緑枠で囲った「移動頻度」は 0005:最高 にするのが望ましいです。それ以外の場合、一歩ごとに停止を挟んでしまいます。
実際の移動ルートを設定するには、赤枠で囲われた「設定開始」を選択します。
「設定開始」を選択すると、マップの下に「設定中」という赤枠が表示されます。ここで、移動ルートを順番にクリックしていきましょう。
1から順に、通り道に数値が表示されて行きます。
ここでは、「右に1、上に3、左に1」というルートに指定しました。設定が完了したら、緑枠で囲まれた「設定終了」を選択してください。
仮にここでテストプレイを行い、下から話しかけると、ルート設定されたとおりに移動するでしょう。
テストプレイを行った方は気づかれたと思いますが、このイベントに再び話しかけても、同じルートを辿ります。
つまり、ゲーム中で設定された移動ルートは、絶対指定(通る座標を直接指定)しているのではなく、相対指定(右に1、上に3……)になるということです。
より詳しく説明すると、別の任意のイベントから、このイベントの移動ルートを指定する場合も、このイベントからの相対座標を指定するということです。
それでは、プレイヤーの移動ルートの場合はどうでしょう。これは、「イベントを呼び出したイベントの座標」からの相対位置を指定します。
先程作成したイベントに、今度はプレイヤーを対象にした移動ルートの指定を追加します。
新たにイベントコマンド「移動ルートの指定」を作成し、キャラクターを 0001:プレイヤー 、移動頻度を 0005:最高 にし、移動ルートを設定しました。
ここでテストプレイを行います。イベントに下から話しかけると、まずイベントの移動が行われ、続いてプレイヤーキャラが「左1、下3、右1」に移動するのが分かると思います。
複数のイベントを同時に動かすことも可能です。その為にまずは、新たなイベントを既存のイベントの2歩上に設置し「町の人2」と名付けます。
ここで、最初に作成したイベントの方で、このイベントを対象とした「移動ルートの指定」を行います。
ここでイベント2つとプレイヤーの移動ルートを設定しました。すべてを同時に動かすために、上のふたつの「完了までウェイト」のチェックをはずしましょう。
これで準備完了です。今回は、最初のイベント(下にある方)に上から話しかけてみてください。3人が同時に移動しているのが分かると思います。
後述する「カスタム移動」を使えば、移動の自由度は高まります。
しかし、簡単な動きのイベントでは、カスタム移動を使用しなくても、事足ります。
ここでは、カスタム移動を用いない場合に、設定可能な移動の種類を挙げます。
イベントコマンド キャラクター>移動>カスタム移動 は、キャラの移動をはじめとした、一連のイベントコマンドをグループ化するものです。
特定のイベントまたはプレイヤーに対して、通常の移動の合間にウェイトを挟んだり、SEを演奏したり、フキダシアイコンを表示するなど、様々なことが可能になります。
カスタム移動の最大の利点は、複数のイベントやプレイヤーを同時に移動させることが可能になるということです。
移動させるだけなら、前述の「移動ルートの指定」だけで十分ですが、その動作の合間にウェイトやSEの演奏などを挟む場合は、カスタム移動が必要になります。
従来の「移動ルートの指定」とは異なり、一歩毎に移動する方向を設定します。
4方向移動の他に「プレイヤーに近づく」「プレイヤーから遠ざかる」「ジャンプ」などが設定可能です。
このコマンドはカスタム移動内でなくても設定可能ですが、カスタム移動との相性が良いため、カスタム移動内での使用を推奨します。
通常のイベントコマンド キャラクター>アクション>ジャンプ では、ジャンプ先の座標を、イベントとの相対距離で指定していました。
一方、カスタム移動内での「ジャンプ」は、相対座標ではなく、絶対座標を指定する形式になっています。適宜使い分けてください。
カスタム移動の活用例として、プレイヤーキャラが岩を押して動かすイベントを作成します。
岩のトリガーを0002:プレイヤーから接触 にし、イベントが起動したとき、岩とプレイヤーキャラが同時に動くように設定します。
イベント実行内容の赤で囲まれた部分が岩自身、緑で囲まれた部分がプレイヤーキャラの一連の動きになります。
図のようにイベントを作成したら、テストプレイを行い、実際に岩を動かしているのを確認してください。
●押した方向に岩が動く
以上は一例で、他にも多くのイベントコマンドに対応しています。
Uniteでは、様々な画面効果があります。ここでは説明は割愛しますが、イベントコマンド画面>天候の設定で雨や雪を降らせることも可能です。
その他の代表的な物を紹介します。
まずは、簡単イベントで宝箱を作ります。1ページ目を、赤枠で囲んだように変更します。
宝箱には毒の罠が仕掛けられており、パーティ全員が毒状態になります。
このイベントで使われているイベントコマンドを見ていきましょう。
Uniteでは、マップ画面で、戦闘中のアニメーションを再生することが可能です。イベントまたはプレイヤーを選択すると、それを中心にしてアニメーションが再生されます。
今回の例では、プレイヤーを中心にし、0061:毒 を再生しています。
画面の色調を変更します。今回は、毒ガスという設定なので、毒をイメージした紫色を重ね合わせるため、RGBAの順に(76,0,116,94)としています。
そして一定時間経過後に、元の色調に戻すために、(0,0,0,0)と設定しています。
また、フレーム数(1秒=60フレーム)が指定可能で、徐々に色調を変更させることも可能です。今回はいずれも60フレームとしました。
画面の色調は、UniteではUnityのものをベースにしているため、従来のツクールとは設定方法が異なり、RGBA値を指定する形式になっています。通常のRGBA値は(0,0,0,0)です。
色調については、テンプレートで「セピア」「夕焼け」など、いくつかが設定可能ですが、それ以外の例を挙げます。
イベントのもつ重要な特徴をひとつ挙げると「マップを切り替えて戻ってくると、イベントは元の位置に戻る」というのがあります。
ここに注意しないと、思わぬ問題を引き起こすことがあります。
例えば、関所にやってきた主人公達に道を空けて通してくれる兵士を考えます。場所移動で道を空け、その後は「ご武運を」という台詞を話すだけにします。
しかしこの場合、一旦マップの外に出て戻ってきたら、この兵士は、再び、道を塞ぐ場所に戻ってしまいます。
この時、話しかけても「ご武運を」としか言わず移動してくれなかった場合、その後のゲーム進行が不可能になってしまいます。
ここでは、その解決策の一例として、移動前と移動後の兵士を、それぞれ異なるイベントで行う方法を紹介します。
まずはこの図をご覧ください。
●兵士(移動前)ページ1
道を塞ぐ、移動前の兵士と、道を空けてくれた後の移動後の兵士がいます。この段階では、移動後の兵士は、出現条件を満たしていないので表示されません。
●兵士(移動前)移動ルート
兵士を矢印のルートで移動した後、特定のスイッチをONにします。ここでは11番のスイッチを使用します。
なお、移動ルートの指定を行う際は、「移動頻度」を 0005:最高 にするのが望ましいです。
まずは、移動前の兵士の2ページ目をご覧ください。
●兵士(移動前)ページ2
緑枠の条件が成立したので、移動前の兵士はページ2に切り替わります。ここでは、自動実行でイベントコマンドイベント>イベントの一時消去 を行い、
どの座標にいても、即座に消去されるようになります。
ここで、移動後の兵士をご覧ください。
●兵士(移動後)ページ1
出現条件が成り立ったので、今後は、この兵士が表示されるようになります。
●マップを切り替えても、兵士は元の位置に戻らない
イベントを消去します。マップを切り替えるなどして再読み込みが行われるまで、再表示されることはありません。
空のページを準備するより若干処理が軽量化出来るため、もう二度と登場させないイベントは、一時消去することをおすすめします。
0~999の間からランダムに選ばれた数字を当てるゲームを作成します。
流れを見ていきましょう。最初に変数21番に答えをランダムで設定します。
赤枠で囲った部分をループします。ループの最初にプレイヤーに数値の入力を促し、緑枠で囲った部分で判定を行います。
この時、正解の場合はその旨表示し、「イベント処理の中断」を行います。
残り回数は変数22番で管理されます。初期値は10ですが、1回答える毎に減って行き、
0になってしまったら「ループ中断」で赤枠の外に出て、残念と言われ、正解を教えてくれます。
桁数を指定し、プレイヤーに数値の入力を促します。入力された数値は指定された変数(この例では23番)に代入されます。
ループを設置すると、その下に動作を繰り返す が追加され、その間に挟まれたイベントを繰り返し実行します。
途中でループを抜ける際には、「ループ中断」を行います。
この例のように、「イベント処理の中断」でイベントそのものを終わらせても、ループを抜けることが出来ます。
●数値を絞り込んでいった末、みごとに正解
ヒエラルキーの中にコモンイベント という項目があります。
ここまでのイベントは、マップイベント、すなわちプレイヤーがそのマップにいる時だけしか、起動することが出来ませんでした。
一方、コモンイベントは、どこのマップからでも呼び出すことが可能です。
起動方法は、イベントコマンドフロー制御>コモンイベント で呼び出す他、スイッチなどの条件が成り立つ時に起動するような設定も可能になっています。
まずここでは、ひとつだけ紹介します。残りは、データベースの設定の解説後に後述します。
何度もよく使うイベントは、コモンイベントにすることが望ましいです。
ここでは、全回復およびセーブが出来るポイントをコモンイベント化します。
これで、イベント側の実行内容は、イベントコマンドフロー制御>コモンイベント で、このコモンイベントを呼び出す1行で済みます。
●他の場所にコピーしてもきちんと機能する
多くのマップに配置されていくイベントを、コモンイベントを使わずに多数配置した場合、
その後、設定にミスが見つかったり、修正したくなった場合、一つ一つ修正していかなくてはならず、大きな手間がかかります。
しかし、コモンイベントで実行するようにしていれば、コモンイベントを一つ修正するだけで、すべての修正が完了します。
イベントコマンド シーン制御>セーブ画面を開く でセーブを行った時は、この時のイベント実行内容も一緒にセーブされます。
よって、「セーブ画面を開く」の後にイベント実行内容が続いていたら、それも一緒に保存されるため、
そのイベントを書き換えてロードしても、変更前のイベントコマンドの続きが実行されてしまいます。
このようなことがないように、「セーブ画面を開く」の後には重要な処理は入れないようにしましょう。
さて、いかがだったでしょう。ここまでの学習で、「イベントはどのように作るのか」が少しずつ理解できたと思います。
この後、より実践的なイベントを作成していきますが、データベースについての知識が必要なイベントを作るために、先にデータベースを学習します。