4月分の進捗報告

YU-RIS備忘録【ボタン】

どうもこんにちは、笹音です。
あいも変わらず体験版用スクリプトとシナリオ推敲を進めています。

今作はADVスクリプトエンジンYU-RISをお借りしています。
とにかく命令が最小限に作られていて、難しいことをせず、用意された機能だけを使うならとても簡単。私のようなゲーム制作初心者にもおすすめのエンジンです。

ただ、ちょっと変わったことをしようとすると急に難易度が跳ね上がります。
何が大変って、ネット上にあまり情報がないんですね。

これはもうどんどん情報を残していくしかない、ということでこれから触る方のため、そして今後自分が忘れたときのため、使えそうな小ネタや躓いて解決できたことなどを極力ここに書き残しておこうと思います。


今回やりたいこと

今回やりたいのは「フェイスウィンドウの上にアニメボタンを表示したい」です。アサキさんが超絶可愛く描いてくださった主人公の顔グラフィックにサークルTORaIKI様の「 エモーションアニメ素材集 」を重ねて描画しようと思ったのですが。


「\SP.ANCG」ではご覧の通りウィンドウ+顔グラフィックの後ろに隠れてしまいます。
これらはボタンとして描画されていて、スプライトをボタンより上に表示するというのは(通常の方法では)おそらくできません。

なのでこれもボタンにしてしまおう!という作戦です。1から作るのは難しそうだったので「メイン画面設計.txt」内の以下の部分を改造して使うことにしました。
//改頁アイコン
\BTDEF.GROUP("ES.GAMEMAIN")
\BT.GROUP(1)
\BT.CGSYS.AN("main/texticon/icon_")
\BT.AN.NUM(15)
\BT.AN.TIME(100)
\BT.XY(1209, 637)
\BT.Z(021)
\BT.T(100)
\BT.TYPE(0)
\BT.SET(TIP.TX.REPAGEICON)

一見複雑そうですが基本は¥SPと同じみたいですね。ボタンにカメラの概念はないため、Z軸は距離ではなく単純な重なり順という認識で問題ないと思います。数字が大きくなるほど上に、数字が同じだと後から描画されたものほど上になります。顔グラが20ですので初期値から弄っていなければ21のままで問題ありません。
これを以下のように改造しました。

\BTDEF.GROUP("ES.GAMEMAIN")
\BT.GROUP(1)
\BT.CGSYS.AN("ファイル名")
\BT.AN.NUM(アニメ枚数)
\BT.AN.TIME(1コマの切り替え時間、私の場合は50にしました)
\BT.XY(X座標, Y座標)
\BT.Z(021)
\BT.TYPE(0)
\BT.SET(TIP.ANIME)

緑字のところは各自変更してください。
赤字のANIMEはスプライト名みたいなものだと思うのでなんでも大丈夫なはずです。今回はアニメーションさせたいのでわかりやすくANIMEとしました。複数使う場合はANIME1、ANIME2……といった感じで、被らないよう必要数用意してください。



実行結果です。わーいちゃんと顔グラより前に表示されました!

消すときは
\BT.END(ES.GAMEMAIN, ES.GAMEMAIN.TIP.ANIME)
でいけます。ボタン名を変更している場合は赤字の部分を合わせて変更してください。

なお、アニメさせる必要がない場合は
\BT.CGSYS.AN("ファイル名")→\BT.CGSYS("ファイル名")
と変更し、アニメ枚数1コマの切り替え時間辺り削ればたぶんいけると思います。
マクロ化して顔グラを複数レイヤー化、目パチ&口パク対応とかもやろうと思えばできそうですね。私はもっと特殊且つ簡単な方法で顔グラを複数レイヤー化させているんですがそれはまた別の機会に。

これで終わり……ではなく、実はまだ大きな問題が残っています。このままですと右クリックでウィンドウを消した際追加した分が残ってしまうんです。顔グラと一緒に消えるようにしたいですよね。
こちらはERISをいじることで実現可能です。予期せぬ動作をしたり更新後動かなくなるなどリスク多めですのでやる場合は自己責任でお願いします


「ES_Gamemain.yst」のフェイスウィンドウの表示、非表示設定に「TIP.ANIME」をそれぞれ追加させたところ望んだ動作になりました。正しいやり方なのかはさておき、やりたいことは実現できたので解決とします。

YU-RISを使ってる方がどの程度いるのかわかりませんが情報が増えれば利用者さんも増えると信じて……!
躓いたり役に立ちそうなネタを見つけたらまた書きますね。