投稿記事

2020年 02月の記事 (3)

[一言進捗]/[講座]スクリプトで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』

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

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

[一言進捗]パーティクルプラグイン製作中

ダイスプラグイン不具合修正

昨日、ダイスプラグインのV1.03アップデートを行いました。
不具合修正のみとなりますが「change/変化」コマンドを使う予定のある方は
お手数ですが更新の方よろしくおねがいしますm(_ _)m

https://twitter.com/thiropGames/status/1224464184995274752


一言進捗

ダイスプラグインの作業は一段落ついたので、
次に販売予定のパーティクルプラグインの整備を進めてます!

https://twitter.com/thiropGames/status/1224658475550068738

プリセットデータみたいなのをたくさん用意して、
すぐに色んな場面で使えるようにしたいなと考えてます。

3月中頃くらいに販売できるように製作中!
(ダイスプラグインは時間かかったので今回は無理な仕様は詰めずに進めたいです…)



自創作の方でもパーティクルプラグインを使いつつ機能の調整・追加をしてます。

↓戦闘シーンに組み込み

アクションシーケンス系のプラグインだと組み込みやすいけど
デフォ戦闘システムだとどこでパーティクル再生を指定すれば良いのか……うーん

(アニメーションのノート欄にパーティクル再生情報を埋め込むのが良いかなと、
 うっすら考えてます。)




今回は講座おやすみです。

ci-enで進捗記事を書きつつ、少しずつ講座の内容を書き溜めていくのが性にあってそうなので、だいたい進捗記事2〜3回で1回くらい講座コーナーも出せるかなと思います。

(ちなみに、次回の講座はスクリプトコマンドでのmeta情報の扱いについて解説予定)

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

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

[一言進捗]/[講座]格好良いアニメーションの極意

一言進捗

もう、ずーーーーーーーっとメニューの調整作業。
たぶん、今月もずっと。

https://twitter.com/thiropGames/status/1223584051669241856

メニューウィンドウ設計するって大変ですね・・・(遠い目

せめて今月のプレツクデーにはメニューの花形(?)といえばやっぱり合成屋!
・・・あたりのメニュー進捗を出したいですね。



いつか講座になるかもしれない何か

しばらくはダイスプラグインのサンプルで使っているテクニックを紹介する予定です。

いちおう、コモンイベントにはコメントをつけているのですが、補足や考え方なども少しずつ紹介していきたいなと思います!



いい感じのピクチャアニメーションを作る!

上の進捗動画内にもありますが、

「交渉成功!」

「交渉失敗…」

といったちょっとした情報を表示するのに、
ひと手間かけてフォトショップなどで画像化してから
ピクチャで動かすことで、演出のインパクトが大幅に上がります!


今回はピクチャをアニメーションさせる際に格好良くみせるコツみたいなものを紹介しようと思います!


ダイスプラグインのちんちろりんサンプルで使っている2つのピクチャ演出↓

この2つの共通点こそが、私が思うアニメーションの極意です!!
(見比べて考えてみてくださいね)





その共通点は……






1. ものすごく勢いのあるインモーション
2. 完全には止まらず、じわじわと動く継続モーション
3 勢いのあるアウトモーション


という、3つのモーションから成り立っていることです。

これはもう鉄板です!


アニメーションで変化させるのはだいたい下の4つ。

  • 位置
  • 大きさ・形状(拡大率)
  • 不透明度
  • 角度

最初に上げたモーションがそれぞれどんな要素でできてるか検証してみます。

スライドモーション

インモーション

始めは勢いよく右から中央にスライドしてきますね。

ただ、よく見ると移動と同時に透明な状態か不透明な状態に変化しています。

また、形状をみると横に潰れた状態(高さ0)から通常の状態に戻っています。


このように複数の要素のアニメーションを組み合わせるとより複雑で飽きないアニメーションが出来上がりやすいです。


少なくとも、不透明な状態のピクチャがドーンといきなり出てこないように、
始めは不透明にするか、高さか幅を0%にするなど意識すると良いでしょう。


また、インモーションはこれでもかと早く&大げさに演出すると、勢いがついた心地よいアニメーションになると思います。


継続モーション

中央(より若干右)にスライドしてきたテキストは、
その場で止まらずに少しずつ左に移動を続けます。

このちょっとした動きがあるだけでモーションがリッチに見えます。

勢いよくインしたあとにも微妙に動かし続けましょう。


2つ目の例でも、勢いよく縮小しつつインしたあとも、
ジリジリとゆっくり縮小をつづけています。


アウトモーション


インモーションと対応させて

  • 左へ移動
  • 形状を横に潰す(縦0%、横130%)
  • 徐々に透明に

といった3つの要素をアニメーションさせています。

インモーションより多少アニメーションフレームに余裕をもたせて
余韻をもたせるようにしています。
(といっても遅くしすぎたらテンポが悪くなるので注意!)


本当にこの3つを守るだけでそれっぽいアニメーションになると思いますので
みなさんもぜひピクチャ演出を活用してみましょう!

(ピクチャ演出はイージング系のプラグインを使うのも緩急が簡単につけれてオススメですが、↑の動画のように3つのモーションをしっかり設定すればイージング無しでも意外となんとかなります・・・というより、3つのモーションの設計の方が大事かと思います!)



ちなみに、ダイスプラグインのサンプルではピクチャ表示で画像を指定してから
演出用のコモンイベントを呼ぶだけで上で挙げた演出を行ってくれます!

ご購入されてる方は雑にピクチャ演出に活用したり、コモンイベントの中身を書換えてアニメーションを改造してみたりしてくださいね!



こんな感じでしばらくはダイスプラグインの宣伝がてら、
サンプルで使っているテクニックを少しずつ紹介してこうと思います。

宣伝うざいかもだけど、ダイスを振るだけじゃないダイスプラグインをヨロシクネ!!
ダイス・サイコロプラグイン『TRP_Dice』

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

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

月別アーカイブ

記事を検索