[一言進捗]/[講座]スクリプトでmeta情報を活用

一言進捗

ダンジョンゲーの方はずっとメニュー作業とか言ってたけど、
ここのところは諸事情で戦闘まわりのシステムの整理をしています。

といってもやはり地味作業ですけどね!!


画面シェイクの挙動の修正↓(順に特大、大、中、小、極小)

ツクールのシェイクは30フレームと指定したら最初から最後までずっと同じ揺れの大きさなのですが、徐々に揺れが小さくなるように修正しました。(ランダムシェイクの既存プラグインを改造)

あと、開始直後に揺れ直後に画面をフリーズさせるヒットストップみたいな演出もオプションパラメータで用意して使ってみてるのだけど、ちゃんとそれっぽくできてるのかよくわからない。

ヒットストップ、ムズカシイ・・・(´・ω・`)


戦闘中のカメラ操作も不完全で騙し騙し使ってたのだけど、きっちりスムーズにズーム・フォーカスができるように調整。


地味だけど、結構大事な部分だと思うので個人的には満足な作業でした🤸‍



RPGツクールMV講座

ダイスプラグインのサンプルで使ってるテクニックを紹介しようのコーナーその2!

スクリプトコマンドでmeta情報を扱う

プラグインの設定のためにイベントとかスキルとか、
色んなデータのメモ欄にカッコをつけて書くあれはmetaデータと呼ばれるのですが、
実はプラグインでなくてもスクリプトコマンドで活用することもできます。

ダイスプラグインのサンプルでもイベントなどを覗くとちょこちょことメモ欄にメタ情報が埋め込まれてます。

今回の講座ではすごろくの「ワープマス」でのメタ情報活用例を紹介します!


ワープマスのイベントの挙動はこちら↓

ワープマスに入ると、対となるワープ先のイベントの位置まで瞬時に移動しています。

さっそく、ワープマスのイベントページを見てみましょう↓

メモ欄には<ワープ先イベントID:97>と書かれており、
このメタ情報を参考にして内部でワープ先のイベントの位置にプレイヤーを飛ばしています。

イベント部分はコモンを1行呼ぶだけとなっており、
ワープマスを量産するにもmeta情報のIDだけ変えれば良い設計となっています。

(変数で指定しても良いのですが、どちらにせよ内部でスクリプトコマンドを使って処理したい内容なので、メタ情報を使った方が手間は少ないと思います。)


さて、実際にどのようにスクリプトコマンドでmeta情報を扱っているかみてみます。
コモンイベント「ワープマス(※)」の中程のスクリプトコマンドです↓

スクリプトコマンドは書ける行数の制限があるため詰め詰めで多少見づらいので、
ここでは下のように小分けに説明してきます。

  1. メモ欄の情報を得るために呼び出し元イベントのイベントデータを取得する
    2.メモ欄のメタ情報から「ワープ先のイベントID」を取得する
    3.ワープ先のイベントの座標にプレイヤーを転送する

1.イベントデータの取得

1行目:var eventId = this.evntId();
イベントコマンドを実行していくインタプリタ(ここでのthis)が保持している呼び出し元のイベントIDを変数eventIdにセットしています。

2行目:var event = $gameMap.event(eventId);
取得したイベントIDのイベントオブジェクトを$gameMap(マップ)に問い合わせて取得しています。

このeventにはイベントの位置やページ状態などのパラメータなどが保存されています。(このようにゲーム中に変化するデータを保持しているオブジェクトをここではゲームオブジェクトと呼びます。)

3行目:var data = event.event();
イベントのゲームオブジェクトから、そのイベントのデータベース上の元データを取得しています。(このようにゲーム中に変化しないエディタで設定した元データをここではデータオブジェクトと呼びます。)

2.metaデータの取得

4行目:var meta = data.meta;
イベントページのメモ欄に設定したメタ情報は、イベントデータのmetaプロパティにまとめられてます。

5行目:var warpIdString = meta['ワープ先イベントID'];
<ワープ先イベントID:イベントID>のように指定したイベントIDは、
メタ情報の左側部分の名前でアクセスできます。

(日本語プロパティはmeta['プロパティ名']のようにかかなければなりませんが、
<targetWarpEventId:イベントID>のように英語の名前を設定しておけば
meta.targetWarpEventIdといった通常の形でアクセスできます。)

ここで変数名をwarpIdではなくwarpIdStringとしているように、
メタ情報に格納されたデータは全て文字列(String)となっています。

6行目:var warpId = Number(warpIdString)
文字列だったワープ先のIDを数値に変換しています。


3.ワープ先のイベントの座標にプレイヤーを転送する

7行目:event = $gameMap.event(warpId);
ワープ先のイベントのゲームオブジェクトを取得してevent変数にセットしています。

9行目はここでは関係ないのでカット。

11行目:$gamePlayer.locate(event._x,event._y);
イベント(event)のx,y座標にプレイヤー($gamePlayer)の配置(locate)させています。

これでワープ先のイベントの位置にプレイヤーをワープさせられました!



初心者でもコメントでスクリプトの流れが分かりやすいようにかなり丁寧に書いてますが、自分が実際に書くとしたら省略してこんな感じかも↓

var eventId = this.eventId();
var event = $gameMap.event(eventId);
var warpId = event.event().meta['ワープ先イベントID`]
event = $gameMap.event(warpId);
$gamePlayer.locate(event._x,event._y);

・・・意外と省略してませんね。

変数名だけを見れば1行目はイベントIDの取得をしていて、2行目はイベントの取得、3番めはメタ情報からワープ先のIDを取得しているということがすぐに分かるので、あまり省略しすぎず丁寧に変数に名前をつけて書いてくのが良いと思います!
(スクリプトコマンドだと行数制限があるのがネックですけどね・・・)





こんな感じで、ダイスプラグインサンプルのコモンイベントには処理の流れやスクリプトに細かいコメントを書いてますので、ご購入されている方は色々眺めてみると面白い発見があるかも?


ダイスを振るだけじゃないダイスプラグインをヨロシクネ!!
ダイス・サイコロプラグイン『TRP_Dice』

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索