RPGツクールで変数の操作を触っていると「マップX」や「マップY」という項目が出てくると思います。
今回はこちらの活用法として次の2点を紹介していこうと思います。
- 特定の場所にオブジェクトを持って行くと起動するイベント
- 今いる場所を記録して、別の場所から記録した場所へ戻ってくる仕組み
実際に私は2つ目の使い方をよくやっていて、ダンジョンからワールドマップへ戻るアイテムを作っています。
覚えると便利なので是非一緒に作ってみてください!
それでは早速1つ目の解説から始めましょう。
特定の場所にオブジェクトを持って行くと起動するイベント
例えば謎解き要素として「ボタンの上に重い物を乗せて扉を開く」というものを見た事はありませんか?
一見作るのが難しそうな仕組みですが、変数のX座標、Y座標を使えば簡単に作れてしまうんです!
マップと必要なイベントを用意
まずはマップを用意します。
今回は練習なので横17、縦13と小さめに作ってみましょう。
マップが用意出来たら次はイベントを用意します。
まず必要なイベントは「開かない扉」「扉を開ける為のスイッチ」「スイッチの上に乗せる物体」の3つです。
開かない扉
適当な所にイベントを配置し、扉の画像を設定します。
開かない扉なので実行内容は空のままで問題ありませんが、文章の表示で「開かない」や「仕掛けを解かないと開かないようだ」などヒントを入れてあげると良いですね。
ただ、このままでは永遠に扉の向こうへ行けないので、ボタンが押されて扉が開いているバージョンを作ってあげましょう。
とはいっても、別のイベントを用意するわけではありません。
扉のイベントエディターの左上に「1」とあると思います。
ツクールのイベントはページを増やす事ができ、条件を満たした場合に2ページ目の内容が実行されるという仕組みになっているのです。
この2ページ目に開いている扉を設定してあげれば良いというわけですね。
ページの増やし方はイベントエディター右上の「EVページ作成」を押すだけです。
これで新しいページが作られます。
このページはどう表現するかで作り方も変わってきますが、今回は練習という事で画像も実行内容も設定しない状態にしておきましょう。
ここで重要なポイントがあります。
イベントエディターの左上に「出現条件」という項目があると思います。
こちらのスイッチ(1つ目のみでOK)にチェックを入れ、任意のスイッチ(仮に扉オープンと命名)を設定してください。
こうする事で「扉オープンのスイッチがオンの時」にこのページが実行される設定になります。
もし設定し忘れると無条件で扉が開いている状態になってしまうので気を付けてくださいね。
設定が終わったら扉の準備はOKです。
扉を開けるスイッチ
適当な場所にスイッチ(ボタン)の画像を設定したイベントを置きます。
実行内容は空で大丈夫ですが、左下のオプションは「向き固定」と「すり抜け」にチェックを入れ、プライオリティは「通常キャラの下」に設定しておきましょう。
これをやっておかないとイベントの画像が違うものになったり、当たり判定ができてイベントの上にオブジェクトを乗せる事が出来なくなります。
次に2ページ目を用意して画像を上に乗せるオブジェクトと同じ物に設定します。
出現条件は扉と同じスイッチを設定しましょう。
スイッチの上に乗せる物体
適当な場所にイベントを設置し、岩の画像を設定します。
次に、この岩をスイッチの場所まで動かすのに必要な処理として実行内容に移動ルートの設定を入れましょう。
移動ルートの設定はイベントコマンドのタブ2にあります。
ルートの設定は「プレイヤーから遠ざかる」を1つ入れ、完了までウェイトにチェックを入れるだけでOKです。
また、オプションやプライオリティなどはそのままで大丈夫ですが、プレイヤーが岩にぶつかったら移動するようにしたいので、トリガーを「プレイヤーから接触」にしておきましょう。
最後に2ページ目に空のページを作って出現条件を扉オープンにしておきます。
これをやらないと、違うマップから戻ってきた時にこのイベントが元の場所で復活してしまいます。
並列実行で岩の現在地を取得しよう
さて、3つのイベントを用意しましたが、実はこれだけでは何も起こりません。
そもそも今回のキーワードであるX座標もY座標も出てきていませんからね!
という事で次は変数を使って岩オブジェクトの現在地を取得する処理を作っていきます。
任意の場所(プレイヤーが侵入できない場所、左上の端など)に新しくイベントを用意します。
ここがポイントで、トリガーは必ず並列処理にしてください。
並列処理にする事で他のイベントやプレイヤーが行動している間も同時進行で処理をし続けてくれます。
間違えて自動実行にしてしまうと動かなくなるので必ず並列実行にしてください!
次に実行内容で変数の操作を呼び出し、任意の変数に「オブジェクト座標X」など適当な名前を付けます。
次に下の方にオペランドという項目があると思うので、ゲームデータからキャラクター「岩(画像ではEV002):マップX」を代入してください。
同じように座標Yも作りましょう。
次に条件分岐を設定するのですが、ここで1つ確認すべき事があります。
それは、この岩オブジェクトを乗せるスイッチが座標的に何処にあるのか、という事です。
これは簡単に確認でき、一度イベントエディターをOKを押して閉じた後、スイッチのイベントにカーソルを乗せます。
すると右下にこのような数字が出てると思います(PC版ツクールMVの場合)
この12,6がイベントの座標で12がX(横)6がY(縦)となるので、これを条件分岐で使用していきます。
まずオブジェクト座標Xが12と同じ時という条件分岐を作り、その中にY座標も同じように作ります。
いずれも「それ以外のとき」にチェックを入れておいてください。
そしてY座標の条件分岐の中に扉オープンのスイッチをオンにする処理を入れます。
これで岩オブジェクトがX12,Y6の座標に来た時にスイッチがオンになります。
ウェイトは無くても良いですが、置く瞬間がかなり一瞬の出来事になるので余韻を持たせる為に入れています。
最後に2ページ目を追加し、岩オブジェクトと同じく空のページを作って出現条件を扉オープンにしておきます。
これで特定の場所にオブジェクトを持って行くと起動するイベントの完成です!
<スポンサードリンク>
今いる場所を記録して、別の場所から記録した場所へ戻ってくる仕組み
こちらは私の作品「ソルシエール年代記~時を越えし者たち編~」のワールドマップの画像です。
本作ではダンジョンの途中でもワールドマップへ戻る事のできる「帰還のマップ」というアイテムがあり、使用すると今いたダンジョンのアイコン上に移動するという仕組みになっています。
(例えばヘルバの森から出たら左下のアイコンの上にキャラクターが出現します)
この処理も先ほどと同じように作る事が出来るんです!
コモンイベント内に変数の処理を入れる
今回はコモンイベント内に処理を作っていきます。
ダンジョン突入時の場所移動の前に入れても良いのですが、コモンイベントの方が何かと便利なのでおススメです。
先ほどの処理と同じようにX座標とY座標の変数を作りますが、今回はゲームデータのキャラクターから「プレイヤー」を選んでください。
また、今回はワールドマップの「マップID」も使用するので、ゲームデータの「その他」から「マップID」を取得する変数も作りましょう。
この3つの操作をする事で「今いるマップのIDの、今いるX座標、Y座標」がそれぞれの変数に代入されます。
このコモンイベントをダンジョンへ場所移動する前に呼び出す事で、現時点のマップや座標が記録されるというわけです。
場所移動の処理で変数を呼び出す
先ほどのコモンイベントの下に場所移動用の処理を作っていきましょう。
イベントコマンドから場所移動を呼び出します。
恐らく普段の場所移動では直接指定を使う事が殆どだと思いますが、今回は下の変数で指定を使います。
IDはマップIDの事なので、マップIDを取得させた変数を選びます。
同じようにXとYも選びましょう。
こうする事で先ほど記録されたマップのX、Yの位置にキャラクターを移動させる事が出来ます。
本作ではアイテムの効果として作っているものなので、誤爆を防ぐ為に選択肢で移動するかどうかを確認しています。
(赤線は本作独自の処理なので、通常は必要のない処理です)
この処理を組み込んだコモンイベントをアイテムの使用効果から呼び出す事で、変数によって記録された場所へいつでも何処からでも移動できる便利アイテムが作れます。
まとめ
変数におけるX座標、Y座標は使い方さえわかってしまえば様々な用途で役に立ちます。
また、イベントの位置設定という別のコマンドでも位置を変数で指定する事が出来るので、プレイヤーがいる場所に突然物を落とすみたいな演出も出来るかもしれませんね。
今回紹介した使い方だけでも十分に役立つと思うので是非ご活用ください!
それでは、また次回_( _´ω`)ノシ
いつも、お世話になってます。少し難しい質問をしても良いでしょうか? いま使われてるmvtの 戦闘システムを使って フロントビューですが コモンイベントを使いながら攻撃の設定とかしてますが こちら側からの攻撃に付いては問題無いのですが
敵からの攻撃を設定する時 こちら側が1人 すなわち1対1なら簡単な設定で対処出来ますが こちら側のパーティに複数いる時の当たり判定の設定に困っています バトル時の変数の使い方も少し混ぜて 教えて頂けませんか?
こんにちは。
私はバトルで変数を使う事がほとんど無いうえに複雑な処理を組むのが苦手なので、私からアドバイスするのは難しいです・・・
せっかくご質問いただいたのに、ご期待に応えられず申し訳ございません・・・
因みに 敵からの攻撃に対して 回避 ぶつけ合い 反撃のシステムを組みたいと思ってます。 1対1での設定は何とか出来ました。
お応えいただきありがとうございます。とりあえず やれるとこまでやってみようかと思います。バトル以外で また分からないことがありましたら また書かせていただきたいと思います。今はバトルのコモンイベントや変数を頑張ります。
ご無沙汰しています。 今回の質問なのですが 夜の町並み作りをしてみようかと思ってます。 しかし 窓からの光や街灯のなどの光等 表現方法がありましたら教えていただきませんか?
こんにちは。
私が思いつく方法としては「アニメーションの表示」を使うやり方ですね。
データベースのアニメーションで灯りに良さそうなアニメーションを作り(Water3の色を黄色にし、左から4番目の輪っかを5フレーム連続表示など)、並列実行のマップイベント内でループさせるやり方になります。
イベントコマンドの条件分岐の下にループがあるので、アニメーションの表示をそのループの中に入れてあげてください。
アニメーションをツクール上で編集する事にはなりますが、自分好みに調整できるので自由度は高いと思います。
ありがとうございます。成る程並列処理を使ってアニメーションを使うんですね。試してみます。
因みに 並列処理の簡単な使い方とか 少し教えて頂いてもよろしいでしょうか?
こんにちは、並列処理の使い方を記事としていくつか紹介させていただきました。
拙い文章ではありますが、少しでも参考になれば幸いです。
また、以前アニメーションの処理をループの中に入れるようお伝えしましたが、ループの処理を入れなくても並列処理なら問題なく繰り返し表示してくれるようです。
こちらの勘違いで間違った事をお伝えしてしまい申し訳ございませんでした・・・!
ありがとう御座います、参考にさせていただきます。今回の質問なのですが、ツクールのゲーム内に独自の時間を用いて、人と会話して時間経過したり、デートなどしたり買い物などしたりして ゲーム内の時間を進めたりするシステムをコモンイベントに入れてみようかと思うのですが アドバイス頂けますか?またこのシステムをゲーム内にてRPGの各町中に移動した際に町の中の主人公の行動に時間制をもちいようかと思ってます
例えば 主人公の行動できる時間を3時間だとして 会話は10分 買い物は30分 デートは2時間経過するイベントみたいなのを考えてるのですが
私だったら、まず「時間経過」という名前の変数を作って、会話で加算10、買い物で加算30、デートで加算120(2時間を分に直してます)とそれぞれコモンイベントを作っておきます(これらのコモンイベントを町の中での行動に応じて呼び出します)
行動制限があるのなら更に並列処理のコモンイベントを追加して条件分岐で「時間経過の変数の値が180以上の時」を指定し、強制的にイベントを起こすよう中身を組みます。
3時間ぴったりしか行動できないようにするのなら、更に「残り時間」という変数を用意し180を代入、そこから「時間経過の変数」を減算して残り時間を出します。
後は条件分岐で残り時間がそれぞれの行動時間以上あるかないかで「時間的に余裕が無い」と行動を制限する感じですね。
かなりざっくりと書いてしまったので、もしわかりにくかったらまた質問してください!
アドバイスありがとうございます。 今の進捗としてはオリジナルですがいつでも時間を確認出来る様に時間表示の設定が終わったところです。ボタンを押して表示される様に並列処理で対応しました。これから、その時間経過のコモンイベントを作るところですが これがまだ💦変数の使い方が曖昧なもので 設定に困惑しています。先生ならどのような変数を致しますか?一応会話で時間が進むと言う概念で作りたいのですが、もう少しお付き合いをお願い致します。
変数は難しいので慣れないうちは大変だと思います。私も最初は意味が分からず苦戦していましたw
私ならどう、というのは以前の返信で書いた内容をより詳しく解説してほしいという意味でしょうか?(理解力が無くてごめんなさい!)
取り敢えず、先生のアドバイスを基に基盤作成をしてみます。