この「STEP+」は本編の「STEP1~STEP20」とは独立した単体の機能説明や制作手順説明になります。
本編の「STEP1~STEP20」での学習後、より多くの機能等を学びたい際に御覧ください。
乗物を入手することで、海・空など移動できる世界が広がるというのは、冒険RPGの醍醐味と言えます。
ウディタの「基本システム」には、残念ながら乗物の機能というのは備わっていないのですが、ウディタ自身の機能を駆使することで、少し難しいこともありますが、乗物を実現することができます。
ウディタで乗物を実現するにはいくつかのやり方があるのですが、今回の説明を一例として、様々なタイプの乗物の作り方を見ていきましょう。
今回説明する方法にはいくつか制限がありますので、ご注意ください。
ただし、この制限はこれまで学習した内容で応用を利かせれば解決できるものですので、ご自分のゲームの内容に応じて調整してみましょう。
- 乗物に乗って移動できるのは1つのマップ中のみ。
乗物に乗ったまま別のマップに移動したりということは考慮していません。 - マップ中に勝手に動きまわるイベントが存在しない。
マップ上を敵キャラが動きまわる、シンボルエンカウントで戦闘が発生するようなことは想定していません。 - 乗物への乗り降り時の演出は簡易的なものにする。
隊列を組んでいるパーティーが次々に乗物に乗り込んでいくような演出部分は、説明が長くなってしまうので省略します。
今回の説明記事は他と比べると、複雑な処理になっていますので、ひとまず「乗物イベントの流れ」を確認し、あとは自分なりに考えつつ、他の記事で必要な内容だけを参考にしてみてもいいかもしれません。
【INDEX】
乗物の設定を考える
まずはどういう乗物を作っていくか考えていきましょう。
今回はひと通りの乗物を作るということで、下の表の通り、陸海空の3種類の乗物とアイテム使用によって呼び出される乗物の4種類を作っていきます。
画像 | 乗物の種類 | 特徴 | 乗り降りできる場所 | その他 |
---|---|---|---|---|
陸ニワトリ | 通常と同じ陸を移動できる。 移動スピードが速くなる。 | 陸の移動可能箇所ならどこでも乗り降りできる。 | マップが切り替わっても待機位置は変わらない。 | |
海ニワトリ | 海を移動できる。 移動スピードは変化しない。 | 海と陸の境界で乗り降りできる。 降りるときに陸地が移動可能箇所でないと降りれない。 | マップが切り替わっても待機位置は変わらない。 | |
空ニワトリ | 空を移動できる。障害物なし。 移動スピードは変化しない。 | 陸の平地でのみ乗り降りできる。 | マップが切り替わっても待機位置は変わらない。 | |
空ニワトリ(召喚型) | 空を移動できる。障害物なし。 移動スピードは速くなる。 | 「ホイッスル」アイテムを使用して呼出し、乗ることができる。 陸の移動可能箇所ならどこでも乗り降りできる。 |
※画像はウディタ同梱データの色を加工したものです。
変数・データベースの作成
乗物を導入するために必要となる「変数」や「データベース」も考えていきましょう。
変数の作成
必要になる「変数」は下の表の通りになります。
これを「通常変数」もしくは「予備変数」に追加していきます。
変数名 | 用途 |
---|---|
乗物 | 0:乗物に乗っていない,1:陸ニワトリ,2:海ニワトリ,3:空ニワトリ,4:空ニワトリ(召喚型), -1:陸ニワトリを降りた瞬間,-2:海ニワトリを降りた瞬間,-3:空ニワトリを降りた瞬間,-4:空ニワトリ(召喚型)を降りた瞬間 どの乗物に乗っているか&状態を判定するのに使用します。 |
陸ニワトリ入手フラグ | 0:乗物を入手していない,1:乗物を入手した,2:入手した乗物に乗ったことがある 乗物を入手している場合のみ、マップ上に乗物を表示します。 すでに乗ったことがある場合は初期表示位置を変更します。 |
海ニワトリ入手フラグ | |
空ニワトリ入手フラグ | |
空ニワトリ(召喚型)使用可能フラグ | 空ニワトリ(召喚型)は「ホイッスル」アイテムを持っていて使用することで呼び出されるため、使用可能なマップにいるかを判定するのに使用します。 |
それでは、「変数」を追加していきます。
「システムデータベース」を開きます。
「14:通常変数名」を選択します。
「ステップアップ」の本編のデータを流用していますので、データ数が足りなくなっています。
「データ数の設定」ボタンを押して、データ数を増やします。
増やしたところに「変数名」を設定します。
「OK・更新」ボタンを押して設定を保存します。
データベースの作成
今まで「データベース」は「ユーザーデータベース」・「可変データベース」・「システムデータベース」と、すでに用意されているものの内容を設定編集してきましたが、「ステップアップ」の本編を含め、「データベース」を新たに作成したことはありませんでした。
「データベース」は「コモンイベント」と同じように、新たなものを自由に作成することが出来ます。
今回の乗物のようにいくつかの設定項目が必要となるものは、一つ一つ「変数」で扱うのはたいへんですので、「データベース」を作成して管理するのが便利です。
「データベース」も「変数」のように簡単に作成出来ますので、ぜひ覚えましょう。
「データベース」で設定したい項目は下の表の通りです。
ゲーム進行によって変化する情報を含んでいるので、「可変データベース」で作成します。
データ名 | 用途 |
---|---|
乗物名称 | 乗物の名前を設定します。 |
乗物の歩行グラフィック | 乗物の歩行グラフィックを設定します。 |
乗物の影番号 | 乗物の歩行グラフィックに表示する影を設定します。 |
乗物の移動速度 | 乗物の移動速度を設定します。 |
乗物のX座標 | 乗物を降りて、街・ダンジョンなど別マップに切り替わった場合に座標を保存して、乗物があるマップに戻った時に同じ位置に表示するのに使用します。 |
乗物のY座標 | 乗物を降りて、街・ダンジョンなど別マップに切り替わった場合に座標を保存して、乗物があるマップに戻った時に同じ位置に表示するのに使用します。 |
乗物の向き | 乗物を降りて、街・ダンジョンなど別マップに切り替わった場合に向きを保存して、乗物があるマップに戻った時に同じ向きに表示するのに使用します。 |
それでは、「データベース」を作成していきます。
今回作成する乗物の「データベース」は、ゲーム進行によって変化する情報を含んでいるので、「可変データベース」で作成します。
「可変データベース」はイベント処理で「データベース」に値を書きこむことができます。
また、「可変データベース」はセーブデータに「データベース」の内容が保存されます。
「可変データベース」を開きます。
左の「タイプ」がいっぱいですので、「タイプ数の設定」ボタンを押して増やします。
増やした「タイプ」を選択して、「タイプの内容設定」ボタンを押し、「タイプ」の設定をしていきます。
まずは、「タイプ名」を設定します。
あとは「データ名0~6」にざっと項目を設定していきます。
- データ名0
「乗物名称」は「文字列」で入力される内容になるので、「文字列」ボタンを押します。 - データ名1
「乗物の歩行グラフィック」は「ファイル名(文字列)」を入力される内容になるので、「文字列」ボタンを押します。 - データ名2
「乗物の影番号」は「変数(数値)」で入力される内容になるので、「変数」ボタンを押します。 - データ名3
「乗物の移動速度」は主人公の移動速度と同様に0~6の「数値」を入力される内容になるので、「変数」ボタンを押します。 - データ名4,データ名5,データ名6
「乗物の座標・向き」は「数値」で設定される内容なので、「変数」ボタンを押します。
また、「データIDの設定方法」を「最初の文字列データと同じ」とすることで、データ入力で最初に入力した文字列がデータIDの名称になります。
今度は、一部の「データ名」の内容を入力しやすいように設定していきます。
まずは「データ名1」の「乗物の歩行グラフィック」を「Dataフォルダ」内の指定フォルダのファイル一覧から選べるように設定します。
「▼特」ボタンを押して、「データ内容の特殊設定」を開きます。
「ファイル読み込み」をチェックして、「初期フォルダ」で「CharaChip」を選択します。
これで、「CharaChipフォルダ」にあるファイルから「乗物の歩行グラフィック」を選択することができます。
設定ができたら「OK」ボタンを押します。
「データ名2」の「乗物の影番号」を「システムデータベース 9:キャラ影グラフィック名」の内容から選べるように設定します。
「▼特」ボタンを押して、「データ内容の特殊設定」を開きます。
「データベース参照」をチェックして、「システムDB」のタイプ「9」番と指定します。
右側に「データベース」の何を選択しているか表示されています。
これで、「システムデータベース 9:キャラ影グラフィック名」の内容からプルダウンメニューで選択することができます。
設定ができたら「OK」ボタンを押します。
「データ名3」の「乗物の移動速度」を「主人公の移動速度の設定値0~6」の範囲で選べるように設定します。
「▼特」ボタンを押して、「データ内容の特殊設定」を開きます。
「選択肢を手動作成」をチェックして、「挿入する値」で「0~6」の値を入力していきます。
「表示文字列」は空白でも大丈夫です。
これで、「主人公の移動速度の設定値0~6」の範囲の数値をプルダウンメニューで選択することができます。
設定ができたら「OK」ボタンを押します。
また、「初期値」を設定することで、入力の手間を減らすことが出来ます。
「データ名3」の「乗物の移動速度」は標準の移動速度ということで、「3」を「初期値」とします。
これで、「タイプの内容設定」が完了しましたので「OK」ボタンを押します。
完成した「データベース タイプ」はこのようになりました。
乗物は4種類作成するので、「データ数」を「データ数の設定」ボタンを押して増やします。
「乗物の設定を考える」で考えた乗物の設定を入力していきます。
座標や向きについては今後のイベント処理で入力されるようにするので、ここでは何も入力しません。
入力ができたら、「OK・更新」ボタンを押します。
これで、「乗物設定のデータベース」が完成しました。
乗物イベントの流れ
これから作成する乗物のイベント処理の流れを簡単に説明します。
- 乗物ごとに「タイル設定ファイル」を作成する。
各乗物ごとにマップ上で移動可能なタイル(マップチップ)の種類が違いますので、「タイルセット設定」でそれぞれの「タイル設定ファイル」を作成します。
詳しい操作は「タイルセット設定」?を参照してください。
海移動用マップ・空移動用マップとマップをまるごと用意する必要はなく、この「タイル設定ファイル」で「海移動用 タイル設定ファイル」・「空移動用 タイル設定ファイル」を用意し、これを切り替えることで簡単にマップ上で移動可・不可などを変更することが出来ます。 - マップ上に乗物用のマップイベントを配置する。
ウディタでは乗物を個別にした設定などはありませんので、マップ上で操作キャラクターが乗物に乗る際にマップ上に配置してある乗物の画像は、通常のNPC(村人など)と同じようにイベントとして配置することになります。 - 乗物に乗るイベントを作成する。
マップ上に配置した乗物のイベントに話しかけたり・接触することによって、乗物に乗ることができるイベント処理を作っていきます。
具体的には、マップ上に配置した乗物のイベントの乗物の画像を消して、操作キャラクターの画像を乗物の画像に変更する処理を行います。
また、「タイル設定ファイル」の変更もここで行います。 - 乗物を降りる管理イベントを作成する。
乗物から降りる際には、降りられるタイル(マップチップ)上でボタンが押された時に降りる処理を行います。
さすがに降りられるタイルが配置されている場所に一つ一つイベントを配置するわけにはいきません。
そこで、並列実行される「乗物を降りる管理イベント」を一つ配置して、そのイベント内でボタンが押された時に降りようとしているタイル(マップチップ)が降りられる種類のものか判定し、降りられる場合は降りて、操作キャラクターの画像を元に戻し、乗物のマップイベントを再度表示する処理を行います。
すべての乗物でまったく同じ処理というわけではありませんが、大まかにはこのようなイベント処理で乗物の機能を実現していきます。
陸ニワトリの作成
「乗物の設定を考える」と「データベース」に設定した情報を元に「陸ニワトリ」の設定をまとめてみます。
乗物名称 | 乗物の歩行グラフィック | 乗物の影番号 | 乗物の移動速度 | 移動できる場所 | 乗り降りできる場所 | その他 |
---|---|---|---|---|---|---|
陸ニワトリ | 通常の人間と同じ | 少し早くなる | 陸地 | 陸の移動可能箇所ならどこでも乗り降りできる。 | マップが切り替わっても待機位置は変わらない。 |
使用される「変数」はこちら。
変数名 | 用途 |
---|---|
乗物 | 0:乗物に乗っていない,1:陸ニワトリ,2:海ニワトリ,3:空ニワトリ,4:空ニワトリ(召喚型), -1:陸ニワトリを降りた瞬間,-2:海ニワトリを降りた瞬間,-3:空ニワトリを降りた瞬間,-4:空ニワトリ(召喚型)を降りた瞬間 どの乗物に乗っているか&状態を判定するのに使用します。 |
陸ニワトリ入手フラグ | 0:乗物を入手していない,1:乗物を入手した,2:入手した乗物に乗ったことがある 乗物を入手している場合のみ、マップ上に乗物を表示します。 すでに乗ったことがある場合は初期表示位置を変更します。 |
乗物イベントの設置
それでは、実際のマップに乗物用のイベントを設置して、イベント処理を作っていきましょう。
まずは、「ステップアップ」本編で使用したフィールドマップを改造して、乗物が動き回れる少し広めのマップにします。
また、上下左右にマップが繋がってスクロールするように「マップのループ設定」を「縦横両方にループ」に設定します。
乗物イベントを作成する前に、準備イベントを作成します。
このイベントは今回の説明用に、乗物の入手フラグなどの初期設定をする準備イベントになります。
「乗物準備」という変数を新たに作成して、この変数が「0」の場合に自動実行されます。
処理内容は、「陸ニワトリ入手フラグ」を「1」にして、「陸ニワトリ」が表示される状態にします。
また、移動速度の変化が分かりやすいように、最初の主人公の移動速度を「イベントコマンド 動作指定」で少し遅くしています。
最初に1フレームのウェイトを入れているのは、マップ表示後すぐに実行されるイベントのため、「動作指定」などの処理をした場合に内容が反映されないことがあります。そういう場合には最初に1フレームのウェイトを入れることで解決します。他のケースでもよくあることなので、イベントがうまく動かない・処理が飛ばされている場合には、ウェイトを入れてみると解決するかもしれませんので覚えておきましょう。
最後に「乗物準備」に「1」が代入され、このイベントはもう実行されなくなります。
「陸ニワトリ」のマップイベントを配置します。
このイベントに話しかけることで、「陸ニワトリ」に乗る処理が実行されるようにします。
「陸ニワトリ」のマップイベントの初期設定をします。
名前と画像を選択します。マップイベントでも「データベース」で設定した乗物の画像をそのまま使用できるように設定したいところですが、処理が煩雑になってしまうので、今回は直に画像を指定します。
「オプション」で「すり抜け」をチェックしておきます。
「陸ニワトリ入手フラグ」が「1以上」、「乗物」が「1以外」の場合にこのイベントが表示されます。
イベント処理を作成していきます。
操作キャラクターの座標を「陸ニワトリ」のマップイベントの座標に変更する処理を作るため、「陸ニワトリ」のマップイベントの座標を「このイベントのセルフ変数」に取得します。
「イベントコマンド 変数操作+」を使って、「X座標(精密)」を取得。
同じく、「Y座標(精密)」を取得。
最後に「イベントコマンド 場所移動」を使って、取得した「陸ニワトリ」のマップイベントの座標に主人公を移動させます。
座標はこのイベントのセルフ変数0にX座標とセルフ変数1にY座標に読み込んでいますが、ここではこのイベントのセルフ変数0、このイベントのセルフ変数1といった分かりやすい指定をすることができないので、座標の指定をX「1100000」、Y「110001」と入力します。
これは「変数呼出し値」という変数を呼び出すための数値になります。この数値で座標を取得してある「このイベントのセルフ変数」を呼び出すことができます。
それぞれ「1100000」がこのイベントのセルフ変数0を表し、「1100001」がこのイベントのセルフ変数1を表しています。
詳しくは「変数呼び出し値」?を参照してください。
次に操作キャラクターの画像を「陸ニワトリ」の画像に変更する処理を作成します。
まずは、今の操作キャラクターのパーティーを含んだ画像の状態を保存します。
乗物から降りた時にもとに戻るためです。
「イベントコマンド キャラ画像」を使って、「特殊処理」で「パーティ全員の画像を記憶」を指定します。
続いて、「特殊処理」で「キャラクター画像を全消去する」を選択します。
そして、「入れ替え」で「1人目の画像を変数「1116000001」に変更」とします。
これで、操作キャラクターの画像が「陸ニワトリ」の画像に変更されました。
「1116000001」については、次で説明します。
「1116000001」も先ほどの「変数呼出し値」で、これはデータベースの内容を呼び出すものになります。
「1116000001」が「可変ベータベース」。
「1116000001」が「タイプ番号16:乗物設定」。
「1116000001」が「データ番号0:陸ニワトリ」。
「1116000001」が「内容1:乗物の歩行グラフィックのファイル名」。
となっています。
詳しくは「変数呼び出し値」?を参照してください。
イベント処理に戻り、最後に変数「乗物」に「1」を代入して、「陸ニワトリ」に乗ったというフラグを立てます。
下記のような処理内容で「乗物に乗る」というイベントが完成しました。
この状態でテストプレイすると、問題なく「陸ニワトリ」に乗れていることが確認できました。
あとは追加部分として、「乗物の影の変更」と「乗物の移動速度の変更」を反映させていきます。
少し煩雑になりますので、軽く流していただいても問題ありません。
まずは、「乗物の影の変更」の処理です。
実際には「陸ニワトリ」の影とそれまでの操作キャラクターの影は同じなので、変更する必要はありませんが、このあとで説明する乗物で影響するものがありますので、ここで処理を作っておきます。
「イベントコマンド 変数操作」で「システム変数 36:主人公の影番号」に「データベース」で設定した「陸ニワトリ」の影番号を代入します。
「1116000002」は「変数呼び出し値」になっています。
これで、「乗物の影の変更」は完了です。
次の「乗物の移動速度の変更」は少し煩雑になります。
「キャラクターの移動速度」は「イベントコマンド 動作指定」で設定するのですが、「乗物の影の変更」のように変数などを代入して変更することができないので、「データベース」で設定した「乗物の移動速度」の値を元に分岐を作って、その分岐の中で「イベントコマンド 動作指定」使って、「乗物の移動速度の変更」を行っていきます。
まずは「イベントコマンド 条件(変数)」で分岐を作成していきます。
「データベース」で設定した「乗物の移動速度」が「0の場合」・「1の場合」・「2の場合」と設定していきます。
移動速度の設定は「0~6」のため、分岐が足りませんので、「「上記以外の場合」を作成」をチェックして、その「上記以外」の分岐の中でさらに分岐を作っていきます。
同じように、「データベース」で設定した「乗物の移動速度」が「3の場合」・「4の場合」・「5の場合」と設定していきます。
「「上記以外の場合」を作成」をチェックして、「上記以外」の分岐を作成することで、「6の場合」とします。
「乗物の移動速度」が「0~6」ごとの分岐が出来ました。
今度は作成した分岐の中で移動速度を変更していきます。
「0の場合」の分岐の中では、「イベンコマンド 動作指定」で「主人公の移動速度を0に設定」とします。
同じように、各分岐で「イベンコマンド 動作指定」で移動速度の設定をして、このようになりました。
これで、「乗物に乗るイベント」は完成です。
乗物管理イベントの設定
続いて、「乗物から降りるイベント」を作成していきます。
このイベントは他の乗物の処理を作るときにも使用するイベントのため「乗物管理イベント」とも言えます。
このイベントでは、ボタンが押されたら乗物から降りるという処理を作っていきます。
まずは、適当な位置にイベントを配置し、初期設定を行います。
このイベントは変数「乗物」が「1」の時・「陸ニワトリに」乗っている時に並列実行されます。
「イベントコマンド その他1」の「キー入力受け付け」で「決定ボタン」が押されたら、「このイベントのセルフ変数0」に「決定ボタン」の値「10」が代入されるようにします。
「キーが押されるまで待つ」のチェックをすることで、常時入力待ち状態となります。
「イベントコマンド 条件(変数)」で「このイベントのセルフ変数0」に「決定ボタン」の値「10」が格納されているか判定するようにします。
「決定ボタン」が押された場合の処理の中で、まずは現在の操作キャラクターの座標と向きを「データベース」の「陸ニワトリ」の設定に保存します。
「イベントコマンド 変数操作+」で「このイベントのセルフ変数1」に「主人公のX座標(精密)」を代入します。
同じく、「イベントコマンド 変数操作+」で「このイベントのセルフ変数2」に「主人公のY座標(精密)」を代入します。
こちらも、「イベントコマンド 変数操作+」で「このイベントのセルフ変数3」に「主人公の向き」を代入します。
今度は「データベース」に上で取得した座標と向きの値を保存していきます。
「イベントコマンド DB操作」で「可変データベース 16:乗物設定 陸ニワトリ 乗物のX座標」に「このイベントのセルフ変数1」を代入します。
「イベントコマンド DB操作」で「可変データベース 16:乗物設定 陸ニワトリ 乗物のY座標」に「このイベントのセルフ変数2」を代入します。
「イベントコマンド DB操作」で「可変データベース 16:乗物設定 陸ニワトリ 乗物の向き」に「このイベントのセルフ変数3」を代入します。
次は操作キャラクターの仲間の位置を先頭の主人公の位置に集合させます。
隊列を組んでパーティーが移動している場合、乗物に乗っているときは仲間の画像自体は消えていますが、透明状態の仲間と隊列を組んでいるイメージのため、乗物から降りる位置を合わせるため、先頭のキャラクターの位置に集合させる必要があります。移動時に、主人公だけで仲間を表示しないタイプの場合は意味のない処理になります。
「イベントコマンド キャラ画像」の「特殊処理」で「仲間全員を主人公の位置にワープ」とします。
集合させたところで、操作キャラクターの画像を乗物に乗る前の状態に戻します。
「イベントコマンド キャラ画像」の「特殊処理」で「記録したパーティ全員の画像をロード」とします。
続いて、操作キャラクターの影をもとに戻します。
「イベントコマンド 変数操作」で「システム変数 36:主人公の影番号」に「0」を代入します。
今回のものですと、「システムデータベース 9:キャラ影グラフィック名」の「0」番は通常の人間用の影になっています。
あとは移動速度をもとに戻せば、操作キャラクター側の処理は終わりです。
「イベントコマンド 動作指定」で「主人公の移動速度」を「2」にします。
最後に「イベントコマンド 変数操作」で変数「乗物」を「-1」にして、「陸ニワトリから降りた瞬間フラグ」を立てます。
現在のままだと、「陸ニワトリ」が今いた場所から消えてしまうので、このフラグを使って、現在の位置に「陸ニワトリ」のマップイベントを表示するようにします。
「乗物から降りるイベント」の前半ができました。
ここまでの処理はこのようになっています。
さて、「乗物から降りるイベント」の後半になります。
ここでは、「陸ニワトリ」のマップイベントを降りた位置に表示する処理を作っていきます。
同じ「乗物管理イベント」上で新しいページを作成します。
「新規ページ」ボタンで新しいページを作り、「ページ2」を選択します。
初期設定は変数「乗物が-1以下」の時・「陸ニワトリから降りた瞬間フラグ」が立っている時に、自動実行とします。
「以下」としたのは他の乗物でも流用できるようにしたいためです。
「イベントコマンド 場所移動」で「陸ニワトリ」のマップイベントを「データベース」に保存してある「座標」に移動させます。
今度は「向き」を読み込んでいきます。
「乗物の移動速度の変更」と同様に変数を代入して簡単に変更ができないので、煩雑な分岐を作っていきます。
「イベントコマンド 条件(変数)」で各向きの数値に合わせて、条件分岐を作成し、その中で「イベントコマンド 動作指定」を使って向きを変更していきます。
分岐を作る。
各分岐でそれぞれの向きに変更すれば、「陸ニワトリ」のマップイベントの「座標」と「向き」が乗物から降りた状態で表示されます。
最後に「イベントコマンド 変数操作」で変数「乗物」を「0」として、「乗物に乗っていないフラグ」とします。
「乗物から降りるイベント」の完成となります。
これまでの処理はこちらです。分岐のおかげで長くなっていますが、処理自体は単純です。
「陸ニワトリ」のマップイベントを「データベース」に保存してある「座標」と「向き」で表示して、「乗物に乗ってないフラグ」を立てたという内容です。
あとは、「陸ニワトリ」のマップイベント側のイベントの「起動条件」に変数「乗物が-1以外」を追加しておきます。
これで、このマップイベントは変数「乗物」が「0」になった瞬間に表示されるようになりました。
長くなりましたが、ようやく乗物が一つ完成しました。
マップ切替時の調整
「陸ニワトリ」の乗り降り自体が完成して乗物の機能が実装されました。
あと少しだけ下記の点を考慮するための処理が必要です。
- 乗物に乗ったまま、別のマップに移動できないようにする。
- 乗物から降りて、別マップに移動してから戻ってきた場合に表示位置を維持する。
乗物に乗ったまま、別のマップに移動できないようにする。
これは簡単です。
変数「乗物」が「0」の時は「乗物に乗っていない」ということになっていますので、マップ移動イベントの「起動条件」に変数「乗物が0と同じ」と追加します。
乗物から降りて、別マップに移動してから戻ってきた場合に表示位置を維持する。
この処理をしておかないと、乗物から降りて、別マップに移動して戻ってきた場合に、乗物が最初に配置してある位置に戻ってしまいます。
ファイナルファンタジーのチョコボのように野生の動物を捕まえて乗物にし、降りたら居なくなるというケースにしたい場合もあると思いますが、今回は乗物は降りた場所で待機しているようにします。
処理の流れは、一度乗物に乗ったことがあり、乗物の「データベース」に乗物から降りた時点の「座標」・「向き」が格納されている状態を前提とし、マップが読み込まれたら、「乗物」のマップイベントを「データベース」に保存されている「座標」と「向き」で表示するというものになります。
まずは「陸ニワトリ」のマップイベントを編集して、「一度乗物に乗ったことがある」というフラグが立つようにします。
「陸ニワトリ」のマップイベントに向かって、ボタンが押されたときに変数「陸ニワトリ入手フラグ」を「2」にして、「陸ニワトリにに乗ったことがある」という状態がわかるようにします。
イベント処理の先頭にこの処理を追加していきます。
「イベントコマンド 変数操作」で変数「陸ニワトリ入手フラグ」に「2」を代入します。
このようになりました。
「陸ニワトリ」のマップイベントでは1行だけ追加です。
次に新しく乗物の位置を復元するイベントを配置します。
このイベントはマップが表示されたら、自動的に乗物の位置を復元する処理を実行し、最後にイベントを消去して終了という内容にします。
マップが表示された直後に1度だけ実行されるイベントです。
適当な位置に配置し、初期設定をしていきます。
名前を付けて、「起動条件」で「並列実行」とします。
「並列実行」としたのは「自動実行」とした場合に、トランジションなどで画面が切り替わる際にマップイベントの位置がずれたまま処理されることがあるためです。
「イベントコマンド 条件(変数)」で変数「陸ニワトリ入手フラグが2と同じ=一度でも陸ニワトリに乗ったとがある」場合の分岐を作ります。
今度は作成した分岐の中に乗物の「データベース」から「座標」・「向き」を読み込んで、「陸ニワトリ」のマップイベントを移動させるわけですが、これは「乗物管理イベント」を作成した際に同様の処理を作ってありますので、そこからコピー(Cキー)&ペースト(Vキー)で持ってきます。
「乗物管理イベント」を選択して、該当のイベント処理を範囲選択し、コピー(Cキー)します。
元の「乗物の位置を復元するイベント」に戻って、分岐の中にペースト(Vキー)します。
同じ処理なので、馴れてくるとこういうものは「コモンイベント」化しておきたいところですが、今回はこのままで進めていきます。
「乗物の位置を復元するイベント」の最後にはこのイベントを消す処理を入れます。
「イベントコマンド その他1」の「イベントの一時消去」で「このイベント」と指定します。
これで「乗物の位置を復元するイベント」は完成です。
完成した「陸ニワトリ」の動画になります。
#flash(http://www.youtube.com/v/iP4IklL3Aqs?fs=1&hl=ja_JP,480x385) [WARNING! - http://www.youtube.com/v/iP4IklL3Aqs?fs=1&hl=ja_JP,480x385)]
今回の乗物「陸ニワトリ」は移動速度が変化するだけの乗物でしたが、変数「乗物」で「陸ニワトリに乗っている」という状態が参照できますので、これを使って様々な乗物の効果を追加することができます。
たとえば、敵と遭遇する確率を低くしたり、歩いているとアイテムを拾ってきたり、戦闘後にHPやSPを少し回復させたりなど、ただ乗るだけじゃない効果を考えてみるのも面白いと思います。
海ニワトリの作成
「海ニワトリ」もまずは設定をまとめてます。
乗物名称 | 乗物の歩行グラフィック | 乗物の影番号 | 乗物の移動速度 | 移動できる場所 | 乗り降りできる場所 | その他 |
---|---|---|---|---|---|---|
海ニワトリ | 影なし | 変わらない | 海 | 海と陸の境界で乗り降りできる。 降りるときに陸地が移動可能箇所でないと降りれない。 | マップが切り替わっても待機位置は変わらない。 |
使用される「変数」はこちら。
変数名 | 用途 |
---|---|
乗物 | 0:乗物に乗っていない,1:陸ニワトリ,2:海ニワトリ,3:空ニワトリ,4:空ニワトリ(召喚型), -1:陸ニワトリを降りた瞬間,-2:海ニワトリを降りた瞬間,-3:空ニワトリを降りた瞬間,-4:空ニワトリ(召喚型)を降りた瞬間 どの乗物に乗っているか&状態を判定するのに使用します。 |
海ニワトリ入手フラグ | 0:乗物を入手していない,1:乗物を入手した,2:入手した乗物に乗ったことがある 乗物を入手している場合のみ、マップ上に乗物を表示します。 すでに乗ったことがある場合は初期表示位置を変更します。 |
海移動用のタイルチップの作成
「海ニワトリ」は海を移動できる乗物になります。
前の「陸ニワトリ」は通常のキャラクターと同じく陸を移動する乗物だったので、「乗物イベントの流れ」の「1.乗物ごとに「タイル設定ファイル」を作成する。」を作業する必要はありませんでしたが、今回はこの作業が必要になります。
現在のマップは陸移動用の「タイル設定ファイル」となっていますので、これから海移動用の「タイル設定ファイル」を作成していきます。
ツールバーから「タイルセット設定」ボタンを押します。
「タイルセット設定」画面が表示されました。
「タイルセット設定」画面での詳しい操作は、「タイルセット設定」?を参照してください。
まずは「データ数の設定」ボタンを押して、データ数を増やします。
あとで作る空移動用のスペースも確保しておきます。
「1:フィールドマップ」を選択して、「Cキー」を押すことで、「タイルセット設定」の内容をコピーすることができます。
あとは追加したところを選択して、「Vキー」でペーストしていきます。
これで、「1:フィールドマップ」の設定をベースにして、簡単に海移動用の「タイル設定ファイル」を作成することができます。
間違えないように名前を変更しておきます。
まずは、「通行許可設定」から変更していきます。
海のパターンを通行可に。
他の陸のパターンは通行不可にします。
これで、海を移動できる「タイル設定ファイル」ができました。
今度は海から陸に降りるときの処理を作る準備をします。
「タグ番号設定」を変更していきます。
色が見にくい場合は「色変更」をチェックしましょう。
「1」番が上陸できるマップチップ。
「2」番が上陸できないマップチップを表すようにします。
建物など、地面の上に配置するマップチップは、地面のマップチップの設定を優先するように「0」番にしておきます。「0」番の設定は透過されて、下にあるマップチップのタグ番号が有効になります。
これで、海移動用の「タイル設定ファイル」は完成しましたので、「OK・更新」ボタンを押して保存します。
この海移動用の「タイル設定ファイル」を「イベントコマンド」を使って変更することで、海での移動ができるようになるわけです。
同じ画面上での作業なので、少し勘違いする場合があるかもしれませんが、現在編集しているマップに今保存した「タイル設定ファイル」は反映されませんので、ご安心ください。
マップの「タイル設定ファイル」の変更はツールバーの「マップの基本設定」ボタンを押して、「マップの基本設定」画面で変更することによって変わります。
乗物イベントの設置
乗物管理イベントの設定
空ニワトリの作成
まずは設定をまとめます。
乗物名称 | 乗物の歩行グラフィック | 乗物の影番号 | 乗物の移動速度 | 移動できる場所 | 乗り降りできる場所 | その他 |
---|---|---|---|---|---|---|
空ニワトリ | 通常の人間と同じ | 変わらない | 空。 障害物がなくなる。 | 陸の平地でのみ乗り降りできる。 | マップが切り替わっても待機位置は変わらない。 |
使用される「変数」はこちら。
変数名 | 用途 |
---|---|
乗物 | 0:乗物に乗っていない,1:陸ニワトリ,2:海ニワトリ,3:空ニワトリ,4:空ニワトリ(召喚型), -1:陸ニワトリを降りた瞬間,-2:海ニワトリを降りた瞬間,-3:空ニワトリを降りた瞬間,-4:空ニワトリ(召喚型)を降りた瞬間 どの乗物に乗っているか&状態を判定するのに使用します。 |
空ニワトリ入手フラグ | 0:乗物を入手していない,1:乗物を入手した,2:入手した乗物に乗ったことがある 乗物を入手している場合のみ、マップ上に乗物を表示します。 すでに乗ったことがある場合は初期表示位置を変更します。 |
空移動用のタイルチップの作成
乗物イベントの設置
乗物管理イベントの設定
空ニワトリ(召喚型)の作成
まずは設定をまとめます。
乗物名称 | 乗物の歩行グラフィック | 乗物の影番号 | 乗物の移動速度 | 移動できる場所 | 乗り降りできる場所 | その他 |
---|---|---|---|---|---|---|
空ニワトリ(召喚型) | 通常の人間と同じ | 速くなる。 | 空。 障害物がなくなる。 | 陸の移動可能箇所ならどこでも乗り降りできる。 | 「ホイッスル」アイテムを使用して呼出し、乗ることができる。 |
使用される「変数」はこちら。
変数名 | 用途 |
---|---|
乗物 | 0:乗物に乗っていない,1:陸ニワトリ,2:海ニワトリ,3:空ニワトリ,4:空ニワトリ(召喚型), -1:陸ニワトリを降りた瞬間,-2:海ニワトリを降りた瞬間,-3:空ニワトリを降りた瞬間,-4:空ニワトリ(召喚型)を降りた瞬間 どの乗物に乗っているか&状態を判定するのに使用します。 |
空ニワトリ(召喚型)使用可能フラグ | 空ニワトリ(召喚型)は「ホイッスル」アイテムを持っていて使用することで呼び出されるため、使用可能なマップにいるかを判定するのに使用します。 |
空(召喚型)移動用のタイルチップの作成
乗物イベントの設置
アイテムの設定
乗物管理イベントの設定
各イベントの調整
乗物機能を実現するイベントの処理は複雑なので、いくつか気を付けないといけない点があります。
乗物サンプルゲーム
今回作成した乗物の機能を確認できるサンプルゲームになります。
※TOPページでの説明どおり、コメント受付を停止させていただきました。
- イベントコマンド 場所移動を開いたとき変数呼び出し値が空白でした -- 名無し? 2011-01-10 (月) 21:35:08
- 名無しさん 今回の「イベントコマンド 場所移動」での変数呼び出し値部分は、あらかじめ入力されているものではなく、自分で入力する部分になります。分かりにくかった部分でしたので、補足させていただきます。 -- 管理人 2011-01-10 (月) 22:44:43
- 海、空ニワトリの作り方がイマイチ分からないのですが・・・・ -- 匿名? 2011-01-11 (火) 12:50:05
- 匿名さん 海・空ニワトリに関しては、一番上に記載のとおりページ全体含めてまだ編集途中なので、完成までしばらくお待ちください。次期ウディタでインターフェイスが変更になるので、 記事が完成するのは次期ウディタ公開後になってしまうかもしれません。すいませんが、ご了承ください。 -- 管理人 2011-01-11 (火) 15:17:10
- 分かりました。楽しみにしてます! -- 匿名? 2011-01-15 (土) 15:23:28