ピクチャの表示方法を操作できるプラグインが欲しい

アバター
めそたね
記事: 9
登録日時: 2023年3月22日(水) 02:33
連絡を取る:

ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by めそたね » 2023年3月24日(金) 14:14

RPGツクールMZでゲーム制作を始めて2ヶ月です。
プログラミング経験はありません。

【相談したいこと】
「ピクチャの表示」で絵を表示する際に「ピクチャの移動」を併用してポップアップしているように見せています。
今は手動で動きをつけているのですが、頻度が多いのでプラグインで自動化ができれば手間を減らせるのかなと思い、こんなプラグイン作れませんか?というご相談です。

【現在やっていること】
今は下記の方法で手動で絵をポップアップ表示させています。

▼プラグインコマンド「ピクチャの表示」と「ピクチャの移動」の併用
スクリーンショット 2023-03-24 1.35.47.png

▼「ピクチャの表示」で絵の拡大率を0%にして表示
スクリーンショット 2023-03-24 1.36.08.png

▼「ピクチャの移動」で絵の拡大率を100%に戻す
スクリーンショット 2023-03-24 1.36.26.png


【試したこと】
何度も使用する操作なので、毎度手動で設定するのは面倒だということでコモンイベントの利用を考えました。
ただ、ピクチャの表示や移動は「ファイル名」や「番号」を都度設定しなくてはいけません。
そこで、「ファイル名」や「番号」を事前に設定しておけるプラグインを2つ導入してみました。

▼全体で見るとこんな感じになります
スクリーンショット 2023-03-24 11.19.28.png


導入したプラグイン(トリアコンタン様作)
・PictureNameVariable
 →事前にピクチャのファイル名を指定する
・PictureControlExtend
 →事前にピクチャの番号を指定する

▼トリアコンタン様のブログ「Delusional Field」
https://triacontane.blogspot.com/


これにより、事前に「座標」「ピクチャ名」「ピクチャ番号」を指定すれば
ポップアップのモーションはコモンイベントで呼び出して再現することが可能になりました。

しかし、毎度「ピクチャ名」「ピクチャ番号」を指定するための操作が必要になるので
トータルの手間があまり変わっていないのでは?という懸念があります。
(モーションのメンテナンスのしやすさは利点ですが)

【やりたいこと】
プラグインの知識がないながらも、プラグインを作れたらもっと楽になるんじゃないかと思いました。

◆プラグインのイメージ
「ピクチャの表示」を実行すると自動的にポップアップの動きをしてくれる
「ピクチャの消去」を実行すると自動的に縮小して消えてくれる
上記演出の有効/無効をスイッチのオンオフで変更可能にする
(変数0を無効、1〜でモーションの動きを選べる、などの拡張性を考えたらスイッチより変数の方がいいかも?)

※プラグインのイメージの発想はトリアコンタン様の
「BalloonPlaySe(フキダシアイコンのSE演奏プラグイン)」です。
・プラグインコマンドで吹き出しを実行すると自動でSEがつく
・スイッチのオンオフで有効/無効を変更可能


現在公式サイトの講座を見て少しずつプラグインやJavascriptについて学んでいるところではありますが、プラグインを自作する段階には全然至っていません。
上記プラグイン作成の技術的可否についてのコメントや、実際に作成などしていただけましたら助かります。


その他関連(?)リンク
ピクチャーモーションプラグイン(MV製プラグインだったのでMZで動作せず)
【ツクマテ】ピクチャーの移動パターンを増やすプラグイン(MV製プラグインだったのでMZで動作せず)
【ツクマテ】【解決済み】ピクチャの表示で漫画的表現をしたい(過去に関連する質問をした時のトピック)

初心者がRPGツクールMZでゲーム制作中(2023.2開始)
https://twitter.com/mesotane
アバター
スズラン
記事: 55
登録日時: 2022年3月25日(金) 16:09

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by スズラン » 2023年3月24日(金) 20:50

 とりあえずプラグインっぽいものを作ってみました。
こういうのはどうでしょう。


showEx_and_eraseEx.js
(3.17 KiB) ダウンロード数: 9 回

コード: 全て選択

 スクリプトで
『showEx(ピクチャid, ピクチャ名, 原点, x, y, 幅, 高さ, 不透明度, 合成モード, 登場フレーム, イージングタイプ)』
と記述するとイージングを伴うピクチャの表示が行えます。
また登場フレームとイージングタイプに関しては省略可能で、
省略した場合フレームは15、イージングタイプは『ゆっくり始まってゆっくり終わる』が設定されます。
ピクチャ名は『""』(ダブルクォーテーション)で囲んでください

『eraseEx(ピクチャid, 退場フレーム, イージングタイプ)』
と記述すると指定したピクチャが徐々に小さくなって消えます
ただし実際には消えているわけではなく拡大率が0%になっているだけなので
完全に消去したい場合は別途ピクチャの消去を行ってください
こちらも退場フレームとイージングタイプは省略可能です。


ちなみにshowEx()及びeraseEx()の直前に
『const v = $gameVariables.value.bind($gameVariables);』
と記入するとv(数値)、といった感じで変数の記入を短くできます。
『$gameVariables.value(数値)』と書くと見づらいと思うので是非。

例:
『const v = $gameVariables.value.bind($gameVariables);
 showEx( v(1), v(2), 1, v(3), v(4), 100, 100, 255, 0);』
        id: 変数1番
    ピクチャ名: 変数2番
      原点: 1(中央)
         x: 変数3番
         y: 変数4番
       幅: 100%
      高さ: 100%
    不透明度: 255
    合成モード: 0(通常)
   登場フレーム: 15
 イージングタイプ: 3(ゆっくり始まってゆっくり終わる)
でピクチャを表示します


原点
0:左上
1:中央

合成モード
0: 通常
1: 加算
2: 乗算
3: スクリーン

イージングタイプ
0: 一定速度
1: ゆっくり始まる
2: ゆっくり終わる
3: ゆっくり始まってゆっくり終わる


 showEx()とeraseEx()という関数?がスクリプトで使えるようになります。
showEx()はまあ、要するにピクチャを表示するスクリプトとピクチャを移動するスクリプトを
一つに合体させただけみたいなものですが。

 eraseEx()は指定した番号のピクチャの幅と高さを0%にするだけです。
スクリプトでピクチャ移動中にウェイトをかける方法が分かりませんでした。
見かけ上は削除されたように見えますが『見えないけどピクチャは存在している』って感じになります。

 またshowExもeraseExもv(数値)という形で変数が使えます。
ピクチャ番号やピクチャ名も変数で指定できるのでコモンイベントにスクリプトを記述して
変数を変更→コモンイベントを実行、みたいな感じでも使えると思います


・・・とまあ、こんな感じでどうでしょう?
プラグインは練習として作ってみたものなので規約とかは特にありません。
最後に編集したユーザー スズラン on 2023年3月25日(土) 11:43 [ 編集 1 回目 ]
アバター
めそたね
記事: 9
登録日時: 2023年3月22日(水) 02:33
連絡を取る:

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by めそたね » 2023年3月25日(土) 06:13

スズラン様

とりあえずプラグインっぽいものを作ってみました。
こういうのはどうでしょう。

ありがとうございます!
早速DLして使ってみたところ、ピクチャの表示/消去の挙動はイメージ通りに動作してくれました。
ただ、入力に変数を使用することができませんでした。

▼ピクチャの表示時ポップアップする動作は実現
スクリーンショット 2023-03-25 3.36.35.png


【変数が使用できない】
▼実行したスクリプト

コード: 全て選択

showEx( v(31), "v(32)", 1, v(29), v(30), 100, 100, 255, 0)

スクリーンショット 2023-03-25 3.51.11.png

▼「v is not defined」のエラーが発生
スクリーンショット 2023-03-25 3.14.19.png

申し訳ありませんが、当方macでやっているせいかF8でデベロッパーツールを起動しようとしても起動しない不具合があり、エラーの詳細をお見せすることができません・・・。
▼当環境はデベロッパーツールが起動しない状況です。。
スクリーンショット 2023-03-25 3.27.39.png


【調査したこと】
自分なりに原因を探ってみようと思い、以下を試しましたが解決には至りませんでした。
・プラグインの順番の見直し
・他のプラグインを全部オフ
・jsの記述の見直し(知識ないですが)
▼この記述がうまくいってないのではないかと推測

コード: 全て選択

let v = $gameVariables.value.bind($gameVariables);

▼ネットで検索して見よう見まねで「let」を「const」に変更するも解決せず

コード: 全て選択

const v = $gameVariables.value.bind($gameVariables);


変数の入力ができれば便利だと思うのでせっかくなら使えるようにしたかったのですが
ちょっとこれ以上は今の自分にはお手上げの状況です(><;)

お時間ありましたらご確認いただけますと幸いです。
初心者がRPGツクールMZでゲーム制作中(2023.2開始)
https://twitter.com/mesotane
アバター
WTR
記事: 558
登録日時: 2015年12月22日(火) 19:14

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by WTR » 2023年3月25日(土) 09:03

僭越ながらコメントを…

コード: 全て選択

let v = $gameVariables.value.bind($gameVariables);

プラグイン内の2か所にありますが意味がない記述になってます。
書く場所の問題です。
おそらくスクリプトの最初に記述することを想定したものじゃないでしょうか。

使い方も "v(32)" ではなく v(32) でいいはずです。
変数の中身を文字列にしてね、という意味で "" で囲んでくださいと書いてあるのだと思います。

ということで↓なら動くはずです。

コード: 全て選択

const v = $gameVariables.value.bind($gameVariables);
showEx( v(31), v(32), 1, v(29), v(30), 100, 100, 255, 0);

が、showEx、 eraseEx いずれもグローバルスコープになってしまっているので
プラグインで処理が完結するようにして、プラグインコマンドで機能を実現するのがよいと思います。
スコープに関しては講座の最初でもちょっとだけ触れられています。
https://tkool.jp/mz/plugin/make/koushiki.html
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
めそたね
記事: 9
登録日時: 2023年3月22日(水) 02:33
連絡を取る:

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by めそたね » 2023年3月25日(土) 12:21

WTR様

ありがとうございます!

プラグイン内の2か所にありますが意味がない記述になってます。
書く場所の問題です。
おそらくスクリプトの最初に記述することを想定したものじゃないでしょうか。

使い方も "v(32)" ではなく v(32) でいいはずです。
変数の中身を文字列にしてね、という意味で "" で囲んでくださいと書いてあるのだと思います。

ということで↓なら動くはずです。

仰る通り、スクリプトの最初に記述することで変数を使用することができました!
また、"v(32)"にはダブルクオーテーション不要でした!

▼スクリプトに記述
スクリーンショット 2023-03-25 10.10.53.png

▼表示されました
スクリーンショット 2023-03-25 9.47.30.png


が、showEx、 eraseEx いずれもグローバルスコープになってしまっているので
プラグインで処理が完結するようにして、プラグインコマンドで機能を実現するのがよいと思います。
スコープに関しては講座の最初でもちょっとだけ触れられています。

なるほど、「プラグイン全体を関数で囲む」をしないと他に影響が及ぶ可能性があるんですね。
プラグインコマンドで機能実現できるようにもしたいので、少しいじってみようと思います!
わかりやすい参照リンクもいただきありがとうございました!
公式の講座はまだjavascript講座のところを読み進めてるところでしたが
「プラグインを作ってみる」も先に目を通してみたいと思います!
初心者がRPGツクールMZでゲーム制作中(2023.2開始)
https://twitter.com/mesotane
アバター
WTR
記事: 558
登録日時: 2015年12月22日(火) 19:14

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by WTR » 2023年3月25日(土) 13:26

プラグインコマンドにするとしたらこんな感じでしょうか。
3つコマンドを用意しました。

SET: あらかじめピクチャの表示・移動に使うパラメータを設定しておく
SHOW: 拡大率0でピクチャを表示 --> SET されたパラメータでピクチャの移動 を合わせて実行
HIDE: 拡大率を0にする

あまり丁寧な造りじゃないので最初に必ず SET しないとエラーになると思います。
使えそうだったら弄ってみる雛形にでもしてください。
添付ファイル
EasyPicture.js
(2.72 KiB) ダウンロード数: 14 回
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
スズラン
記事: 55
登録日時: 2022年3月25日(金) 16:09

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by スズラン » 2023年3月25日(土) 17:26

 WTR様が既に作ってくださったようですが、
一応私もプラグインが完成したので投稿しておきます。

showPictureEx.js
(5 KiB) ダウンロード数: 23 回


 拡大率だけでなく移動しながらや不透明度を変更しながらピクチャを表示させることが可能です。
質問内容を見てそういうプラグインがあったら便利だなあと思いつつ
自分用にこういう機能もほしいと思って色々追加しました。
 それぞれの値には変数の指定や計算式の記述も可能で、
$gameVariables.value(数値)で使いたい変数を指定できます。(スクリプトと同じです)


 あと、もしこの記事を読んでくださったプラグインに詳しい方がいれば
このプラグインの添削(?)をしてくれると助かります。
動作確認はしましたが、なにぶんプラグイン作成は初めてなもので
至らない部分が割とあるかもしれません。
アバター
WTR
記事: 558
登録日時: 2015年12月22日(火) 19:14

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by WTR » 2023年3月25日(土) 18:59

普段から自分で見ても吐き気がするほど酷いコードを書いているので
偉そうなことを言えた身分ではないのですが。

プラグインコマンドの引数を eval で評価するというのは
ちょっと自由度を求めすぎな気がします。
そこに計算式を書ける人ならそもそも最初から最後までスクリプトで書けると思うので…

変数を使いたいというだけなら
プラグインパラメータで変数番号を指定させるというのをよく見ますね。
有効な変数番号が指定されていればその変数を参照し、そうでなければコマンドの引数を採用する、とか。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
めそたね
記事: 9
登録日時: 2023年3月22日(水) 02:33
連絡を取る:

Re: ピクチャの表示方法を操作できるプラグインが欲しい

投稿記事by めそたね » 2023年3月27日(月) 11:55

お返事遅くなりました!

スズラン様
スズラン さんが書きました: WTR様が既に作ってくださったようですが、
一応私もプラグインが完成したので投稿しておきます。

 拡大率だけでなく移動しながらや不透明度を変更しながらピクチャを表示させることが可能です。
質問内容を見てそういうプラグインがあったら便利だなあと思いつつ
自分用にこういう機能もほしいと思って色々追加しました。
 それぞれの値には変数の指定や計算式の記述も可能で、
$gameVariables.value(数値)で使いたい変数を指定できます。(スクリプトと同じです)

ありがとうございます。
試しに使ってみたところ、プラグインコマンドで簡単に操作を行うことができました。
動作も問題なかったです。

WTR さんが書きました:プラグインコマンドにするとしたらこんな感じでしょうか。
3つコマンドを用意しました。

SET: あらかじめピクチャの表示・移動に使うパラメータを設定しておく
SHOW: 拡大率0でピクチャを表示 --> SET されたパラメータでピクチャの移動 を合わせて実行
HIDE: 拡大率を0にする

あまり丁寧な造りじゃないので最初に必ず SET しないとエラーになると思います。
使えそうだったら弄ってみる雛形にでもしてください。

ありがとうございます。
試しに使ってみたところ、問題なく動作しました。
雛形として使っても良いということでしたので、スクリプトの解読を試みておりました。
とても勉強になります!
0から作るのは大変なので参考にさせてもらおうと思います。


最初に自分の頭にあったのは

コード: 全て選択

スイッチXの真偽確認→スイッチXが偽だったら無視

スイッチXが真だったら
「ピクチャ表示」の際「ピクチャの移動」を作動
(拡大率0%→100%、完了までの時間15)

というもので、行いたい動作が決まっているならプラグインコマンドの設定自体を
都度しなくていいので楽だと思ったのですが、色々と難しそうですね。

引き続き、やりやすい形を模索しながら進めていこうと思います。
今回作っていただいたプラグインは中身をよく読んで活用していきたいです。
ありがとうございました!
初心者がRPGツクールMZでゲーム制作中(2023.2開始)
https://twitter.com/mesotane

“MZ:質問” へ戻る