開発日誌

テクニック

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 隊列歩行のメンバーを操作

2022-09-24 22:31:33

RPGツクールMZで、隊列歩行のメンバーの向きを変えたり、現在の位置を取得したり、キャラクターをイベントに変換して自由に動かしたりできるような、プラグインを作成しました。

いずれもプラグインコマンドで操作するようになっているため、RPGツクールMZ専用のプラグインとなっています。

システムのオプション設定で「パーティの隊列歩行」にチェックを入れると、いわゆるドラクエのように、主人公の後ろをパーティーの仲間メンバーがついてくるようになります。

これを隊列歩行と呼び、最近ではRPGツクールVX Ace以降で採用されています。(かつてはRPGツクール95にもあった)

しかし、この隊列歩行のメンバー(ツクールの用語的にはフォロワー)を直接操作するイベントコマンドは用意されておらず、イベント等で隊列メンバーを動かしたりしたい時に困ります。

そこで、プラグインコマンドを使って隊列メンバーを操作できるようにしました。

用途に応じてプラグインコマンドは3種類あります。

  • 隊列メンバーの向き指定
  • 隊列メンバーの位置取得
  • 隊列メンバーをイベントに変換

以下、1つずつ使い方を解説します。

隊列メンバーの向き指定

対象のメンバーを指定した向きに向かせるプラグインコマンドです。

対象となる隊列メンバーと、向かせたい向きの2つをパラメータで指定します。

代表的な使い方としては、イベントキャラに話しかけて、隊列メンバーがそれに対して反応を返すような時、隊列メンバーがそのイベントキャラの方向を向いていない場合があります。

このままだと、あさっての方向を向いたまま隊列メンバーキャラが話すことになってしまいます。そこでこのプラグインコマンドで対象キャラの向きを変えてやれば、ちゃんと相手の方向を向いて話すようになるので、自然な演出ができます。

▲あさっての方向を向いて喋るプリシア

▲ちゃんと前を向いて喋るようになった

対象となるメンバーは番号で指定します。1を指定すると1人目の隊列メンバー、すなわち2人目のパーティーメンバーを指定したことになるので、注意してください。1人目のパーティーメンバー、すなわち主人公キャラの向きを変えたい場合は、普通に「移動ルートの設定」で設定してください。

また、対象となる隊列メンバー番号に0を指定すると、隊列歩行のメンバー全員の向きを同時に指定できます。

向きは、上下左右の4方向のほか、プレイヤーキャラクターと同じ向きを指定することも可能です。

何かを発見したり、誰かと会話するようなイベントで、メンバー全員に同じ方向を向かせたい場合は、隊列メンバー番号に0を、向きに「プレイヤーと同じ向き」を指定してやれば、たいていの場合は自然な動きになります。

隊列メンバーの位置取得

指定した隊列歩行メンバーの、現在の位置(マップXY座標)と向きをそれぞれ変数に取得するプラグインコマンドです。

対象となる隊列メンバーの番号と、それぞれマップX座標、マップY座標、向きを受け取る変数を指定します。

隊列メンバー番号は前述の「隊列メンバーの向き指定」と同様に、1が1人目の隊列メンバー(2人目のパーティーメンバー)となります。主人公キャラの位置や向きは、普通に「変数の操作」のゲームデータで取得が可能です。0で全員の指定とかは当然できません。

変数は一部の項目のみ指定することもできます。位置だけ取得できればよくて向きは不要、といった場合には、向きの変数指定を「なし」にすればOKです。

想定している使い方としては、通せんぼしているキャラを移動させる際に、隊列歩行のメンバーの現在位置を取得して条件分岐し、隊列歩行と重ならないように移動させるとか、隊列メンバーの現在地や向きに応じて他のキャラを移動させたりといったケースが考えられます。

▲左にケイシーがいる場合は右によける

▲右にケイシーがいる場合は左によける

また応用として、隊列メンバーにアニメーションやフキダシアイコンを表示することも、標準機能ではできませんが、以下のようにすれば実現できます。

  1. 透明の画像を設定したダミーイベントを用意する
  2. 対象となるメンバーの位置を変数に取得する
  3. イベントの位置設定でダミーイベントの位置を変数で指定する
  4. ダミーイベントに対してアニメーションやフキダシアイコンを表示させる
  5. ダミーイベントを邪魔にならない位置に戻す

▲ダミーイベントをメンバーの位置に移動

▲隊列メンバーにフキダシアイコンを表示

隊列メンバーをイベントに変換

本プラグインのメイン機能にして、使い方もやや難しいプラグインコマンドです。

このコマンドを使うと、隊列歩行メンバーのキャラクターをイベントに変換することができます。変換後は単なる通常のイベントとなるため、移動ルートの設定やフキダシアイコンの表示、アニメーションの表示など、自由自在な演出が可能です。

使い方としては、まずマップ上に隊列メンバー用のイベントを設置します。画像は空、位置はマップの端などどこでもOKです。オプションで「すり抜け」にチェックをしておくと、障害物に引っかかって動きが止まるのを避けられるのでよいかもしれません。

そしてイベント内でこのプラグインコマンドを発動させます。

イベントIDリストに、1番目の隊列歩行メンバー(2人目のパーティーメンバー)から順番に、変換先のイベントのID番号を指定します。

こうすると、隊列メンバーの現在位置・向き・画像が、指定されたイベントにそれぞれ引き継がれ、隊列歩行のグラフィックは消えます。

あとは、このイベントを隊列メンバーとして動かしてやればOKです。

一部のメンバーだけイベントに変換したい場合は、イベントIDに0を指定すると、そのメンバーはイベントに変換されません。

また、オプションとして「隊列歩行継続」のON/OFFがあります。ONにすると隊列歩行は継続したままになるので、一部のメンバーのみイベントに変換してパーティーから離脱させる場合は役に立ちます。逆に全メンバーをイベントに変換する場合はOFFを指定して、イベント終了後に再度集合させ、イベントコマンドの「隊列歩行の変更」でONにしてやるといいでしょう。

隊列歩行からイベントシーンに突入する際、一度暗転を挟んで、その間に隊列歩行を解除してメンバーキャラクターをイベントとして配置するといった手法が、ツクール製の作品ではよく用いられます。

しかし、いちいち暗転を挟むとテンポが悪くなったり、またイベント作成上の都合であることがどうしても垣間見えてしまいます。

シームレスにイベントシーンに突入したい場合は、このプラグインコマンドが役に立つでしょう。

ただし、隊列メンバーの取り得る位置は数十パターンに及ぶため、キャラを動かす際はそれぞれの初期位置での場合分けがけっこう大変です。

まとめ

イベントキャラの操作系コマンドでは、プレイヤーや「このイベント」を操作することは可能ですが、隊列メンバーを直接的に操作する仕組みは、標準では用意されていません。

おそらく隊列メンバーは人数に決まりがないため、標準機能として用意するには、UI的にも簡単ではないのでしょう。

隊列歩行のメンバーを操作するプラグインは他にもいくつかありましたが、よく使う向きの変更や位置の取得に簡易なプラグインコマンドが欲しかったので、自分でプラグインを作成しました。

隊列メンバーをイベントに変換するコマンドは、やや癖があって使い方が難しいかもしれませんが、一度イベントに変換してしまえば、後は通常のイベントと同じように扱えるため、コツさえ掴んでしまえば、非常に便利だと思います。

このプラグインコマンドを使って、隊列歩行の仲間たちもイベントシーンに参加させてやると、演出効果が高まることでしょう。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] アイテムやスキルの使用可否をスイッチで制御

2022-09-08 00:24:43

特定のスイッチがONの時だけ、アイテムやスキルを使用可能にするプラグインを作成しました。

RPGツクールMV/MZの両方に対応しています。

かつてVX用のスクリプトとして公開した「使用可否スイッチ制御スクリプト」の、MV/MZ版となります。

アイテムやスキルのメモ欄に <enableSwitch:n> と記述すると、そのアイテムやスキルは、n番のスイッチがONの時にだけ使用可能となり、OFFの時は使用不可能になります。戦闘中かメニュー画面か、消費MPなどの使用条件は、もちろんこれとは別に適用されます。

具体的な使用イメージは、現在のマップがダンジョンか否かというスイッチを用意して、ダンジョンからの脱出魔法やアイテムはそのスイッチがONの時にだけ使用可能にするといった使い方や、特定のイベント中は移動魔法・アイテムを使えなくする、といった使い方でしょうか。

スイッチのON/OFFで表現できる状態であれば、何でも条件にできます。

スイッチ以外でも少し工夫することで対応可能です。例えば変数の値が一定値以上という条件であれば、並列処理でその変数の値を監視して、一定値以上の時にスイッチをONに、一定値未満の時にスイッチをOFFにしてやれば、対応できます。

似たようなプラグインは多数存在し、スイッチ以外を使用条件にできる高機能なものもありますが、スキルだけでアイテムには対応していなかったり、他のベースプラグインを必要としたり、高機能すぎて設定方法が複雑だったりしたので、もっと単純なものが欲しいと思って自作しました。

たぶん同じような単純機能のプラグインもあるとは思いますが、見つけきれなかった……。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] ステートの特徴をアクターか敵キャラかで切り替え

2022-07-29 00:43:48

ステートに指定された特徴を、アクターもしくは敵キャラにのみ適用させるプラグインを作成しました。

RPGツクールMV/MZの両方に対応しています。

ステートのメモ欄に以下の記述をすることで、ステートに指定された特徴を、アクターのみ、もしくは敵キャラのみに適用させることができます。

<traitsOnlyActor:特徴番号>
指定した番号の特徴はアクターにのみ適用されます。
<traitsOnlyEnemy:特徴番号>
指定した番号の特徴は敵キャラにのみ適用されます。

特徴番号は、特徴欄に指定された特徴の一番上が1で、以下順番に2,3,4…となります。特徴がたくさん指定されている場合は、数え間違いにご注意ください。

特徴番号はカンマ(,)で区切って複数指定することも可能です。

例えば <traitsOnlyActor:2,3> と指定すると、2番目と3番目の特徴がアクターにのみ適用されます。

いったいどういう時に使うんだって感じですが、ステートの効果を味方と敵とで変えたい時に役立ちます。

具体的には、暗闇(命中率低下)のステートで、味方がこのステートにかかった時は命中率の低下を甘めに、敵がかかった時は厳しめにしたいと思いました。

そこで、ステートの特徴を(1)命中率-65%と(2)命中率-25%の2つに分け、2つ目の特徴は対象が敵キャラの場合のみ有効にします。

そうすることで、味方がかかった時は命中率-65%、敵がかかった時は2つ合わせて命中率-90%となります。

味方が暗闇状態になった時、命中率の低下があまりに大きいと、ミスを連発するようになってかなりイライラさせられます。一方で敵が暗闇状態になった場合は、ほとんどがミスになってくれないと、わざわざ暗闇状態にさせた意味がなくなってしまいます。

上記の低下率であれば、味方の場合は暗闇状態でも1/3は攻撃が当たりますし、敵は1/10の確率でしか当たらなくなるので、戦いやすくなるのではないでしょうか。

このほか、毒によるHP減少率を味方と敵とで変えたり、耐性を味方と敵とで変えたりといったことが考えられます。

標準機能でも、味方用と敵用のステートを別に作成して、そのステートにするスキルも味方用と敵用で別に作成すれば、同じことは可能ですが、かなり面倒です。

なお、このプラグインでできるのは、ステートの特徴をアクターか敵キャラかによって適用するか否かを変えることだけです。ステートの特徴で指定するのではない、継続ターン数を変えたりとか、敵キャラでも雑魚敵とボス敵とで変えたりとか、アクターでも主人公と仲間キャラとで変えたりとかはできません。

後者は特に、何をもって雑魚敵とボス敵とを区別するのかとか、区分は雑魚敵とボス敵の2種類だけで十分なのかとか、いろいろ考慮すべき点があるため、対応しようとするとプラグインの複雑化が避けられません。プラグインの作りは単純にしてあるので、そういった機能をご希望の場合は、ご自身で改造してみてください。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 攻撃ミスや会心の一撃の発生を抑止

2022-07-13 02:15:51

指定したスイッチがOFFの間は、攻撃ミスや回避、会心の一撃が起きないようにするプラグインを作成しました。

RPGツクールMV/MZの両方に対応しています。

ゲームを開始して、いざ最初の戦闘!

でも、1発目の攻撃でいきなりミスが起きたら、ちょっと萎えてしまいます。

例えばプレイヤーキャラクターの命中率が99%、敵キャラクターの回避率が1%で、ミスが発生する確率を限りなく低く設定したとしても、単純計算で50人に1人は最初の攻撃でいきなりミスとなってしまいます。

たとえ戦闘のバランスを丁寧に調整していたとしても、そういう内部の仕組みはプレイヤーには分からないので、1発目の攻撃がいきなり外れた!となったら、作りの粗いゲームだという印象を持たれてしまいます。

ミスだけでなく、会心の一撃についても、最初の攻撃がいきなり会心の一撃だと、ラッキー!と思うよりは、バランス調整の甘さを疑ってしまいます。

かといって、攻撃ミスや会心の一撃が一切発生しないゲームというのも、それはそれで味気ないものです。

というわけで、攻撃ミスや回避、会心の一撃の発生を制御できるプラグインを作成しました。

指定したスイッチがOFFの間は、攻撃ミスや回避、会心の一撃がプレイヤー・敵含めて起こらず、スイッチがONになると、それらが起きるようになります。

具体的には、指定されたスイッチがOFFの時は、命中率が100%、回避率、会心率、会心回避率、魔法回避率がそれぞれ0%となります。ONの時は元の率となります。

ゲーム開始時はスイッチがOFFなのでミスや会心の一撃が発生せず、ある程度ストーリーが進んだ段階でスイッチをONにしてやり、それ以降はミスや会心の一撃が発生するようになる、といった使い方を想定しています。

あるいは、戦闘回数が一定以上になったらスイッチをONにする、といった方法も考えられます。

最序盤の戦闘でいきなりイレギュラーなことが起きるのを防ぐ目的で作成したプラグインですが、例えば特定のイベント戦闘において、ミスや回避、会心の一撃が発生して、戦闘の進行が崩れてしまうのを防ぐ、といった使い方もできそうです。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 進行状況ウィンドウにテキスト幅自動調整を追加

2022-04-14 22:29:40

好評いただいている、メニュー画面に現在の物語の進行状況等を示す簡単なテキストを表示できるプラグイン「進行状況ウィンドウプラグイン」に、長いテキストでも文字の幅を自動的に調整して枠内に収めてくれる機能を追加しました。

ツクールフォーラム」で、長いテキストでも表示できるようにしてほしいという要望があったため、対応したものとなります。

テキストを電光掲示板のようにスクロールさせたり、ボタンを押すと残りの文字が表示されたり、いくつか表示させ方の案はいただきましたが、いずれも一筋縄ではいかなそうだったので、長いスキル名やアイテム名等の場合と同様に、ウィンドウ内に入りきるように自動的に文字幅を少し狭くする方法で対応しました。

プラグインパラメータに「テキスト幅自動調整」という項目を追加しました。

デフォルトはOFFで、OFFだと長いテキストの場合は文字が途中で切れてしまいます。

テキスト幅自動調整OFFの状態。文字が途中で切れている。

これをONにすると、長いテキストの場合はウィンドウ枠内に入りきるように、自動的に文字幅が調整されます。

テキスト幅自動調整ONの状態。文字幅を調整して枠内に収めている。

あまりに長いテキストだと文字が潰れて読めなくなってしまいますが、5~10文字程度はみ出るというような場合には有効だと思います。

ただし副作用として、テキスト幅自動調整をONにすると、表示するテキストに改行や制御文字などが使用できなくなってしまいます。特にMVのデフォルトの表示は改行が入ること前提となっていますので、MVでお使いの場合や、制御文字を使用したい場合は、テキスト幅自動調整はOFFでご利用ください。

「進行状況ウィンドウプラグイン」自体の詳しい使い方については、過去記事「メニュー画面に物語の進行状況を表示」や「進行状況ウィンドウプラグインをMVにも対応」もご参照ください。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。