南極大緑 2023/07/29 10:30

TSロリ魔法少女のETDシミュ作成記録。その5(ピクチャボタンによる選択肢について)

〇その5 ピクチャボタンの選択肢について
このゲームの核は当然戦闘エロやエロトラップなわけですが、そこに繋がる部分もまた重要です。
というわけで今回はトラップの選択画面を作成していきたいと思います。
そもそもどうすれば良いのかもとても悩みましたが、なんとかイメージしている形にはなったかなと思います。


◆ピクチャボタンを選択肢として使う
私の作りたいゲームは、直感的に操作でき、それでいてツクール感の薄いゲームです。
選択肢イベントを使ってデフォルトのウィンドウからトラップを選ぶなら簡単に作れるでしょうけど、それでは味気ないと思いました。
そこで、トラップの選択にもピクチャボタンを使います。


1.仮組イメージ
以下画像の通りです。
この画面を作ること自体はピクチャの表示だけで出来るので簡単です。
しかしこれらのボタンを実際に押して、「第一層」に選択したトラップを反映させるとなると途端にややこしくなります。
前提として、現在の仮組では「第一層」しか作っていませんが、正式に作る際は最低でも「第十層」くらいはあった方が良いと思っています。
なので各階層ごとに選択したトラップを反映させなければなりません。





2.トラップを設置する階層の選択
まず、「第一層」の枠そのものをボタン化します。今回は作りませんが他の階層の枠も同じようにボタン化します。
これにより、各階層の枠ごとにイベントを設定できるようになります。





3.階層選択およびその後の処理
「第一層」のボタンはコモンイベント10を呼び出す処理にしています。
コモンイベント10に設定したイベントは、トラップボタン②~⑤までのボタン化です。
(①をボタン化してないのは、戦闘確認用に別のイベントを割り振っているためです。正式版では①も含めてボタン化することになります)

これにより、「第一層」のボタンを押すまではトラップボタン②~⑤はただのピクチャとして表示され、「第一層」ボタンを押すことで、②~⑤もボタンとして機能するようになります。
これを他の階層でも同じように設定すれば、まず「階層」を選択し、その選んだ階層に更に「トラップ」を選択するという流れが出来ます。
また、コモンイベント10は②~⑤のボタン化の他、そのボタンでコモンイベント11の呼び出し、更にそれぞれのボタンを押した際に指定の変数を代入する処理を組み込んでいます。
処理は以下の通り。







4.トラップの選択
トラップ②~⑤により呼び出されるコモンイベント11は、押されたボタンに応じて「第一層」の枠内に選択したトラップが表示されるという内容です。
これにより、②を押せば「第一層」の枠内にトラップ②のピクチャが表示され、③~⑤も同様となります。
処理の詳細としては、3.で記した通りボタンにはそれぞれ指定の変数を代入する処理が組み込まれているため、条件分岐により現在の変数に対応したピクチャが表示されるようにしています。以下画像の通り。






5.「第一層」枠内のピクチャ消去について
コモンイベント11には、ピクチャの消去が組み込まれていますが、これを入れないとピクチャ番号の大きなピクチャを表示した後、それより下の番号のピクチャが表示されないためです。
正確には表示されないわけではなく、表示されていますが、ピクチャ番号が一番大きいものが前面に表示されてしまうため数字の小さいピクチャは隠れてしまいます。

今回の例で言うと、枠内の②ボタンは変数1のピクチャ20、枠内の⑤ボタンは変数4のピクチャ23としています。
②ボタンを押すと変数1が代入され、現在変数が1となるので、コモンイベント11の設定によりピクチャ20、つまりトラップ②が「第一層」の枠内に表示されます。
この状態で更に⑤ボタンを押すと、変数4が代入され、現在変数が4となるので、コモンイベント11の設定によりピクチャ23、つまりトラップ⑤が「第一層」の枠内に表示されます。
そしてピクチャ消去をしない場合、枠内にはトラップ②とトラップ⑤が両方とも表示されている状態となります。しかし実際に見えるのは番号の大きなピクチャ23のみ、ということになります。
ここでもう一度②ボタンを押すと、現在変数が1となるのですが、上記の通りピクチャ23を消去しない限りピクチャ20は前面に出て来ません。
よって、⑤ボタンを押すとそれ以外②~④のボタンを押しても枠内の表示が変わらなくなってしまうのです。

ピクチャの消去を組み込んでいるのはそのような理由からです。
(本当はボタンを押す際に変数に0を乗算→指定変数の代入、という順序で処理し変数0の際に枠内のピクチャ全消去にしたかったのですが、ボタンを一回クリックする際に処理できる変数は一つのみのようなので、この方法は諦めました)



6.ピクチャ番号について
画像からお気づきの方もいるかもしれませんが、あらかじめトラップ画面に表示しているトラップボタン②~⑤と、「第一層」の枠内に表示するトラップ②~⑤はピクチャ番号を分けています。
なぜかと言えば、同じ番号にするとあらかじめ表示されている番号まで消えてしまうからです。
しかしこの処理の仕方だと一層ごとにピクチャ番号をかなり使うので、上限を超える可能性大です。実装するトラップと階層の数次第ですが、その4の記事で書いたファイル名指定でピクチャを呼び出すプラグインを使うことになるかもしれません。



7.テストプレイ





このように、各ボタンを押すと枠内に反映されます。
なお、「戻す」ボタンは変数に0を乗算し、コモンイベント11を呼び出しています。
コモンイベント11には現在変数によって枠内に②~⑤を表示する他、変数が0になった場合枠内のピクチャを消去する処理が組み込まれています。

8.選択状態の解除
最後に「第一層」の選択状態の解除、あらかじめ表示されている②~⑤をボタンからただのピクチャに戻す処理を作ります。
トラップ設置の手順は、「①階層選択→②トラップ選択」を解放されている階層分繰り返すことになるので、「第一層」のトラップを設置し終わったら、一旦どの階層も選択していない状態に戻り、次の階層を選択するという処理にする必要があります。
ここではスイッチを用いてイベントの管理を行います。
まず、トラップ設置の管理スイッチは4を使うことにし、スイッチ4がonの時はボタン操作不可とします。
以下はコモンイベント10、「第一層」ボタンを押した際に起動するイベントです。②~⑤のピクチャボタン化の前にスイッチ4のoffを組み込み、同時に各ボタンの「無効スイッチ」を4に設定します。
この無効スイッチについては、指定した番号のスイッチがonの場合イベントを無効化するというものになります。
事前にスイッチoffの処理を入れることで、スイッチ4がonになっていたとしてもそれをoffにし、②~⑤をボタン化できます。




次に、右クリックした際にスイッチ4がonになるマップイベントを自動実行で作成します。(条件分岐でスクリプト「TouchInput.isCancelled()」を入力することで、右クリックした場合を条件に出来ます)
これにより、第一層のボタンをクリックしてスイッチ4がoff、②~⑤がボタンになった状態(階層選択状態)の時に右クリックをすると、スイッチ4がonとなり、②~⑤のボタン化が無効化されます。
ただし、「戻す」ボタンの表示自体はピクチャのボタン化プラグイン内の処理ではなく、単純にピクチャの表示をしているため、スイッチ4をonにする時に同時に消去します。
これで、右クリックを押すと階層選択前の画面に戻れるようになります。
※階層選択中でなくても右クリックによりスイッチ4がonとなりますが、階層選択状態でない場合元々②~⑤はボタンになってませんし、戻すボタンも表示されていないため、表向きは何も変化はおきません。



↓階層選択中



↓階層選択後、右クリックにより階層選択前に戻る


この状態だと、再度「第一層」をクリックしない限り「第一層」の枠内は変化しません。右クリックによりスイッチ4がonとなり、②~⑤のボタン化が解除されているためです。





今回はここまで!
すっごい疲れましたし時間がかかりました。
しかしここの処理は結構悩んでいたので形になってきてよかったです。
このやり方なら選択中のトラップを変数で管理出来るので、この後実際にエロイベントを起こす際も変数を参照することで選んだトラップに対応したイベントを発生させられると思います。
ピクチャ番号の上限だけが気がかりですが、今回の場合あらかじめ表示されている②~⑤で画像は一度使用しているので、懸念点である「未使用ファイルを除外」で除外されることはないと思われるため、多分大丈夫だと思ってます。
あとピクチャ番号とかスイッチ、変数はエクセルなりスプレッドシートなりで別途管理した方が良いと感じました。

閉廷!



◎参考にさせていただいたサイト
ツクールフォーラム(選択肢のピクチャ化)
ツクマテ(右クリックでコモンイベント)

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索