投稿記事

プラグインの記事 (3)

配列使ってゲーム制作を効率化する備忘録

こんにちは、今日もツクールMVでここね制作中です!

プログラミングの知識がほとんどないので
いろいろな方の記事を読んで試行錯誤しています (´ヘ`;)

変数をいくつも指定して表示する情報を決めるのですが、
今回はようやく配列を使えるようになってきたので
それを備忘録としてまとめておきます。

これはとても便利!しかもエディターのスクリプト機能でできます。


①変数1 に 変数2,変数3,変数4 を格納

$gameVariables.setValue(変数名,要素値1,要素値2,要素値3);

スクリプト:$gameVariables.setValue(1, [$gameVariables.value(2),$gameVariables.value(3),$gameVariables.value(4)]);
文章の表示:\V[1]


実験のために「変数2 = 5 , 変数3 = 10 , 変数4 = 20 , 変数6 = 'A'」と
変数に数値を入れておいてください。

配列というのはデータの塊。
つまり変数1の中には変数2~変数4という要素が連なって記憶されている。
この状態で変数1を出力すると「5 10 20」と連番表示される。
※文章の表示で出力できます。

もちろん「$gameVariables.setValue(1,[5,10,20]);」と書いても出力結果は同じ。


②変数1 の 配列の頭から1番目の数値 を 変数5 で 取得する

$gameVariables.setValue(変数名,$gameVariables.value(変数名)[要素番号]);

スクリプト:$gameVariables.setValue(5,$gameVariables.value(1)[0]);
文章の表示:\V[5]


現在、変数1には配列「5 10 20」が格納されています。
配列には頭から「0,1,2~」と番号が振られています。
※「0」からなので注意

なので今回は「変数1 の 0番号」(つまり先頭)の数値を変数5に代入します。
この状態で変数5を出力すると配列の頭から1番目の数値「5」が表示される。
これによって配列に格納された要素の値を確認できる。


③変数1 の 配列の頭から2番目に 変数6 を追加する

$gameVariables.value(変数名).splice(要素番号, 0, 要素値);

スクリプト:$gameVariables.value(1).splice(1, 0, $gameVariables.value(6));
文章の表示:\V[1]


配列に要素を追加します。
配列には頭から「0,1,2~」と番号が振られているので
今回は頭から数えて2番目に追加します。
割り込みで追加しているので後ろの要素は自動的に後ろにずれます。
「5 A 10 20」と出力されれば成功。

ちなみに「$gameVariables.value(1).splice(1, 0, 'A', 'B');」のように
追加する要素を複数指定することで
一気に複数の要素を割り込み追加することもできる。
この場合「5 A B 10 20」と出力されれば成功。

「splice」を「unshift」に書き換えて
「$gameVariables.value(1).unshift('A');」にすると
配列の先頭に追加となります。
この場合「A 5 10 20」となる。

「splice」を「push」に書き換えて
「$gameVariables.value(1).push('B');」にすると
配列の末尾に追加となります。
この場合「5 10 20 B」となる。

「(要素番号, 0, 要素値);」の真ん中にある「0」を弄ると次のようになる↓


④変数1 の 配列の頭から3番目の要素 を削除する

$gameVariables.value(変数名).splice(要素番号, 削除する要素数);

スクリプト:$gameVariables.value(1).splice(2, 1);
文章の表示:\V[1]


配列の指定要素を削除します。
今回は頭から数えて3番目の要素を削除します。
後ろの要素は自動的に前にずれます。
「5 A 20」と出力されれば成功。

ちなみに「$gameVariables.value(1).splice(2, 2);」のように
削除する要素数を変更することで複数の要素を一気に削除することもできる。
この場合「5 A」と出力されれば成功。


⑤変数1 の 配列の要素の数 を 変数7 で取得する

$gameVariables.setValue(変数名,$gameVariables.value(変数名).length)

スクリプト:$gameVariables.setValue(7,$gameVariables.value(1).length)
文章の表示:\V[7]


さて、今配列の中にはいくつの要素があるでしょう?
追加や削除を繰り返しているとわからなくなります。
そうなった時は配列の要素数を取得します。

今回は「変数1 の 要素数」の数値を変数7に代入します。
この状態で変数7を出力すると要素数である「3」が表示される。
これによって配列に格納された要素の量がわかるので便利。


⑥変数1 の 配列の要素 から要素値を照合し、条件分岐する

$gameVariables.value(変数名).contains(要素値)

条件分岐(スクリプト):$gameVariables.value(1).contains('A')


最後に配列を使って条件分岐させます。
配列の要素の中に「A」の文字が含まれているかどうかで分岐します。

これを利用するとアイテムポーチのようなことができるので、

①配列 アイテムポーチ「"指輪" "ピアス" "聖杯"」を用意
②条件分岐 "鍵" が必要 & ポーチ内アイテム3つ以内 → false
③プレイヤーが"鍵"を入手する
 配列に"鍵"を追加「"指輪" "ピアス" "聖杯" "鍵"」
④条件分岐 "鍵" が必要 & ポーチ内アイテム3つ以内 → false
⑤プレイヤーがポーチから"ピアス"を捨てる
 配列から"ピアス"を削除「"指輪" "聖杯" "鍵"」
⑥条件分岐 "鍵" が必要 & ポーチ内アイテム3つ以内 → True

とかいうゲームの流れが作れます。

もちろんデフォルトのアイテム機能でもできることです。
ですが、メインアイテムとは別でポーチ機能を実装したい時もあります。
メインアイテム内にはあるけど、
アイテムポーチに入れておかないとダメ、みたいな。


まだ知識を得ただけで活かしきれてはいないですが
今後のゲーム作りの効率化に使っていきたい。
間違ってたらごめんなさい。

よーし、どんどん作っていくぞー!٩( ╹▿╹ )۶

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

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

スクリプトやプラグインを駆使してピクチャ表示を効率化する備忘録

こんにちは、今日もツクールMVでここね制作中です!

CGの枚数が多いので
どうすれば効率よくイベントを制作できるかを考えています。
プログラミングの知識がほとんどないので
いろいろな方の記事を読んで試行錯誤しています (´ヘ`;)

この手のゲームでは「ピクチャの表示」機能は繰り返し使うわけですが、
1枚1枚参照元を選択するのはやはり非効率的ですよね…。
なのでスクリプトを使って表示することにしました。


変数1 = 1、変数2 = 2の場合、2.pngを表示

スクリプト:$gameScreen.showPicture($gameVariables.value(1), $gameVariables.value(2), 0, 0, 0, 100, 100, 255, 0);


太字の個所が変数です。

こうすることで「ピクチャ番号:変数1」「ピクチャ名:変数2」で
イラストを設定することができます。(ピクチャ名は数字で管理する)

私の場合、ピクチャ名に文字列が含まれているので


変数1 = 1、変数2 = 2、変数3 = 3の場合、H2-3.pngを表示

スクリプト:$gameScreen.showPicture($gameVariables.value(1), 'H'+$gameVariables.value(2)+'-'+$gameVariables.value(3), 0, 0, 0, 100, 100, 255, 0);


みたいな感じで変数と文字列を組み合わせています。

さらにピクチャ名の末尾を連番にしておくことで
ピクチャのアニメーションプラグイン を使って画像を切り替えます!


変数1 = 1、変数2 = 2、変数3 = 3の場合、H2-3_02.pngを表示

プラグインコマンド:PA_INIT 2 1 連番 20

スクリプト:$gameScreen.showPicture($gameVariables.value(1), 'H'+$gameVariables.value(2)+'-'+$gameVariables.value(3)+'_01', 0, 0, 0, 100, 100, 255, 0);

プラグインコマンド:PA_SET_CELL 1 2 ウェイトなし


さらにさらに varIDforPlugin を使って
プラグインコマンドも変数で管理しちゃいます!


変数1 = 1、変数2 = 4、変数3 = 5、変数4 = 10、変数5 = 9の場合、H4-5_09.pngを表示

プラグインコマンド:PA_INIT_varID[1] 4 1 連番 20

スクリプト:$gameScreen.showPicture($gameVariables.value(1), 'H'+$gameVariables.value(2)+'-'+$gameVariables.value(3)+'_01', 0, 0, 0, 100, 100, 255, 0);

プラグインコマンド:PA_SET_CELL_varID[1,2] 1 5 ウェイトなし


これで「セルの最大数:変数4」「セル番号:変数5」で指定できます。

よーし、どんどん作っていくぞー!٩( ╹▿╹ )۶

修正したイラストの一部を公開

フォロワー以上限定無料

記事内の限定コンテンツを閲覧できます。無料プランですので気軽にフォローいただけますと幸いです。

無料

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

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

ツクールMVで使用しているプラグイン


こんにちは、汐入ぬまです。
「ドスケベふたなり女学生ここねのオナスポ探訪」を鋭意制作中です。
今回はRPGツクールMVで使用しているプラグインのご紹介です。

RPGツクールMV向けにたくさんの方がプラグインを制作していて
プログラミング知識のない私にはとても助かっています。

ピクチャのボタン化プラグイン


画面上にマウスクリックできるピクチャーを表示させることができます。
本作でも画面左側の「メニュー起動」なんかはクリックで動作します。
マウスだけでプレイできる方が楽、という意見があったので採用しています。

透明部分を自動で範囲外にしてくれるので全画像を同じサイズで重ねればOK。
(※たまに表示がバグることがありますのでそこはご愛嬌で)

ピクチャのアニメーションプラグイン


ピクチャーを連番で管理しておけば、
数字で画像を切り替えられるようになります。
いちいちピクチャー表示で画像を切り替えなくても済むのはとても便利。

ピクチャーを切り替える際に自動でフェードをかけてくれるので
立ち絵や表情を切り替えるのに使わせていただいています。
もちろんアニメーションさせることもできますが、重くなるかもです。

選択肢拡張プラグイン


選択肢を拡張するプラグインです。
選択肢に条件分岐を盛り込むことができます。

たとえば選択欄に「if(v[1] >= 2 && v[2] >= 3)」と入力しておくと
「変数1が2以上、変数2が3以上」の時でないとその選択欄は表示されません。
本作ではパラメータの値によって選択肢が変わるのでとても重宝しています。

プラグインコマンド拡張プラグイン

デフォルトではプラグインコマンドに変数の値を代入できません。

このプラグインを使うとプラグインコマンドの値に変数を代入できるので
ピクチャのアニメーションプラグインなどでいちいちコマンドを書き換えなくても
変数によって切り替えるコモンイベントなどを用意すればとても楽になります。

プラグインコマンドを100近く縦にずらずら並べていた時があって、
このプラグインで変数とループを使ったら数行にまとまりました。整理大事。

◆ 条件分岐で変数を2つ以上使う

デフォルトでは条件分岐は変数1つの値しか設定できません。
でも変数2つの値を参照したい時が結構あります。

そういう時は、条件分岐のスクリプト欄に
「$gameVariables.value(1) >= 2 && $gameVariables.value(2) >= 3」
と入力すれば、「変数1が2以上、変数2が3以上」という
条件分岐を設定できます。

プログラミングの知識がない私はこれに辿り着くまで時間がかかってしまったので
もし悩んでいる方がいれば参考にしていただければと思います。


他にもたくさんのプラグインを使用させていただいていますが、
それはまた別の機会にご紹介できればと思います。
作っている途中で新しい発見があったりするので
こういったゲームの制作はおもしろみがあります。

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

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

月別アーカイブ

記事を検索