本記事は「ツクールフォーラムアドベントカレンダー Advent Calendar 2020」12月18日分の投稿記事です。
今回は、透明タイルや空イベントを使った小技について紹介します。
割と基本的で伝統的な小技なので既にご存じの方も多いと思いますが、基本的ゆえにあまり解説されていなかったりもしますので、改めてご紹介したいと思います。
ツクールのバージョンに関わらず共通して使えますので、応用範囲も広いです。
透明タイルで通行制御
例えば次のような、段差に橋が架かったマップを考えます。
しかしこのままでは、この橋は渡れません。
段差の縁には自動的に四方向通行設定がなされていて、下方向以外は通行不可に設定されています。赤線の間は互いに行き来ができません(当然、壁面の部分はもともと通行不可なので、階段部分以外の下方向にも行けません)。
したがって、下方向にある階段とは互いに行き来ができますが、横方向にある橋とは互いに行き来ができないのです。
これを解決するには、小石や草花といった通行可能な装飾タイルを上に置けばOKです。
RPGツクールの通行判定は、レイヤーが上のタイルの通行設定(ただし[☆]のタイルは無視)が優先される仕組みになっています。なので、下層レイヤーのタイルが通行不可でも、上層レイヤーに通行可のタイルを置けば通行可能になります。
とは言え、橋のたもとにいつも小物が置いてあるのは、景観的に問題があります。
そこで活躍するのが、透明タイルです!
タイルセットの画像にわざと透明のタイルを作り、通行設定を[○]にします。
そしてこの透明タイルを橋のたもとに置くのです。こうすれば外観を変えることなく通行設定を制御することが可能です。
注意点としては、Bタイルの一番左上に透明タイルがありますが、これは上層レイヤーに何もないことを表すタイルなので、通行設定をデフォルトの[☆]から変更してはいけません。必ず別のタイルを透明にして使いましょう。
また、透明なので、実際にタイルが設置されているのか分かりづらいです。なので、開発段階では透明ではなく、分かりやすく○などの記号を入れておくのがお勧めです。リリース時に透明に直すのを忘れないようにしてください。
また通行可にするのとは逆に、通行設定を[×]にした透明タイルで、通行不可にすることもできます。
よくある使い方としては、段差の縁に草花などの小物を置くと、前述の通り上層レイヤーの通行設定が優先されるため、段差の四方向通行設定は無視されて、上側に通り抜けられてしまいます。
そんなところに小物を置かなきゃいいという話でもありますが、置きたい場合もあるでしょう。マップの構造上、上側に立ち入れる必要がないのなら、上側に通行不可の透明タイルを置けば、この問題は解決します。
モブキャラの移動範囲を制御
マップ上にモブキャラを設置して、全く動かないのは味気ないので、自律移動を「ランダム」にして歩き回らせるとします。
そうした時によく起こる問題として、気付いたらキャラクターがとんでもない位置にいたとか、狭い通路に入り込んでプレイヤーの邪魔になるといったことがあります。
前者の問題に対しては、元の位置からあまり離れすぎた場所に行かないようにするプラグインなどもありますが、後者の狭い通路に入り込んでしまう問題には、基本的に無力です。
しかし、後者の問題も解決できる、もっと簡単な方法があります。
「すり抜け」でないイベント同士は重ならない性質を利用して、立ち入ってほしくない場所に空のイベントを設置するのです。
こうしておけば、その場所にはキャラクターが行かないようになります。もちろんプレイヤーキャラクターは普通に通行が可能です。
これ以上進んでほしくないところや、1マスしかない通路の入口、ドアや宝箱の前などに空のイベントを設置すれば、元の位置からあまりに離れたところまで行ったり、狭い通路でプレイヤーの邪魔をすることもなくなります。
イベントの内容はデフォルトの状態で構いません。画像は「なし」、「すり抜け」がOFF、プライオリティが「通常キャラの下」になっていればOKです。
注意点としては、空とは言えイベントには違いないので、むやみやたらと置くと重くなります。斜めに置いたり、壁や樹木、テーブルなど通行不可のオブジェクトを上手く利用したりして、設置する数を節約しましょう。
宝箱をカウンター越しに開けられなくする
カウンター属性を利用すると、お店などでカウンター越しに店員と話ができるので便利です。
ただ仕様的には、「カウンター越しにキャラクターと話せる」という機能ではなく、「カウンター越しにイベントを起動できる」というものに過ぎません。
したがって、宝箱などをカウンターに隣接して設置すると、それもカウンター越しに開けられてしまいます。これだとちょっとマズいですね。
そもそもそんなところに宝箱を置かなきゃいいと言われればその通りなのですが、マップを作っていると案外こういうことはよく起こります。
これを解決するには、カウンター部分に空のイベントを置けばOKです。
ただし今回は「モブキャラの移動範囲を制御」とは違い、デフォルト状態だとイベントが無視されて、カウンター属性が効いてしまいます。
無視されないようにするには、プライオリティを「通常キャラと同じ」にすることと、実行内容が空でないことが必要です。実行内容は空でさえなければ何でもよく、例えば「注釈」だけにしておけば、他に何も影響しないのでオススメです。
こうしておけば、カウンター上にあるイベントが優先的に起動するので、カウンター越しに宝箱が開けられることはありません。
宝箱以外にも、カウンター裏のスイッチとか、カウンターの奥に倒れている人とか、カウンター越しに発動すると違和感のあるイベントに使えます。
ポイントは、設置する空イベントのプライオリティを「通常キャラと同じ」にすることと、実行内容が空でないことです。
逆に、実行内容が空であれば、イベントが設置されていても無視してカウンター属性が発動するため、カウンターの上にイベントで小物等を置いても、問題なくカウンターとして機能します。
タッチUIで額縁や貼り紙を調べる
2マスある壁の上側に置いた額縁や貼り紙を調べるイベントを考えます。
壁の上側だと直接は触れないので、壁の下側にイベントを設置するのが普通です。キーボードやコントローラーの操作ならば、これで何の問題もありません。
しかし、MVから導入されたマウスやタッチ操作の場合、このやり方だとちょっと不都合があります。額縁や貼り紙自体をタッチしても、そこにはイベントが設置されていないので反応しません。その下をタッチしないと反応しないという、やや直感的でない操作を要します。
かといって、額縁や貼り紙自体にイベントを設置しても、壁が邪魔なので、やはりイベントは起動しません。
それを解決するには、カウンター属性付きの透明タイルを利用しましょう。
まず先述の「透明タイルで通行制御」と同様に、タイルセットに透明のタイルを作って、そこに「カウンター属性」を付与します。もちろん通行設定は[×]にしてください。
そしてイベントは額縁や貼り紙自体に設置し、その下のマスの上層レイヤーに、このカウンター属性付きの透明タイルを置きます。
こうすることで、望み通りの動作をさせることができます。
先述の通り、やはり透明タイルのままだと分かりにくいため、開発段階では◆などの記号にしておき、リリース時に透明タイルにすることをオススメします。
おわりに
いかがだったでしょうか?(キュレーションサイト風)
いずれも少しの工夫で、仕様上の不都合が解決したり、プレイしやすくなったりするので、オススメです。
この手のテクニックは、知っている人にとっては基本的すぎるため、あまりしっかりと解説されていない印象があります。
昔はゲームデータの暗号化機能がなく、エディターを持っていれば中身を開いて見られたため、この手のテクニックも自然と広まっていきましたが、XP以降、暗号化アーカイブが作れるようになってからは、敢えて解説しないと広まっていかないような気もしたので、書いてみました。
それでは今回も長くなりましたが、読んでいただきありがとうございました。
コメント
拝見させていただきました。
とても参考になります。ありがとうございます。
ありがとうございます!
参考になれば幸いです。