【RGSS3】小ネタスクリプト改造05
執筆者:神凪洸
- 追加更新「BGMをMEとして再生した!」
- 追加「徐々にピッチを変更しながら再生したい!」
これらは全てVXAce(RGSS3)の小ネタです。
この記事では、■その他(イベントコマンド系) を集めてあります。
変更する箇所は、その部分をコピペしてコメントアウトして取っておき
どこを変更したかわかりやすいよう、#記号などで目印をつけておくと便利っすよ!
■イベントコマンド系
◆BGMをMEとして再生したい!
デフォルトのイベントコマンドでは、各フォルダ(BGMにはBGMフォルダに等)に入れいていなければ
再生することが出来ません。
さらにAudioの再生には以下の特徴があります。
「BGM」
ループ再生。すでに再生されている同ファイルのピッチ変更再生時、一度BGM再生を止め最初からフェードインして再生する。音量のみ変更の場合、そのまま再生箇所を引き継いで再生される。
「BGS」
ループ再生。BGMの再生を妨げずに重ねて再生可能。(デフォルトでは環境音が入ってる)
また、すでに再生されている同ファイルのピッチ変更再生時でも、そのまま再生箇所を引き継いで再生される。
「ME」
ループせず、一度のみ再生。再生が終わるまで、BGMは停止する。
「SE」
ループせず、一度のみ再生。一定の数まで、重ねて再生が可能。(一定数再生されると古いのから強制終了される)
さて、ここで
- 普段BGMとして使用している音楽をループさせないで一周だけ再生して終わらせたい!
- 逆にループ再生させたい!
- これBGMとして使ってるけど、環境音にも使えるからこっちのMAPではBGS扱いしたい。
などがたまーに発生する人もいるのでは?
これらを行うためには、各ファイルをそれぞれのフォルダに複製しなければならないっす。
音楽ファイルって結構、容量大きいっすよね……。少しでも減らしておきたい時に
これはちょっと痛いっす。
そんな時には、スクリプトコマンドで音楽を再生させるのが有効っす!
イベントコマンドの3ページ目の一番右下にスクリプトがあるっす。
それをクリックし、以下のように記述。
Audio.bgm_play("Audio/ME/ファイル名",80,100)
これで、MEフォルダに入っている該当ファイルをBGMとして再生が出来るっす!
ちなみに
Audio.再生法_play("Audio/フォルダ名/ファイル名",音量,ピッチ)
となっており、再生法にはbgm・bgs・me・se の再生させたい方法を記述っす。
◆ピッチをもっとあげたい!or下げたい!
デフォルトでは、150%~50%の範囲までしかいじれないっす。
もうちょっと変えたいって思う方は、先程のスクリプトコマンドでできちゃうっすよ!
Audio.bgm_play("Audio/BGM/ファイル名",80,10)
一番最後の数値はピッチっす。これを好きな数値に変える事で、デフォルトで指定できない
ピッチで再生出来るっす。
◆BGMをフェードインさせたい!
デフォルトでは出来ないっすね。なんでフェードイン入ってないんすかね。
これも同じくスクリプト素材を導入しなくてもスクリプトコマンドで、出来るっす。
以下のように組むことで可能っすよ。
スクリプトコマンドの音量を指定する箇所に 変数を指定。
変数の操作で好きな値を加算(音量をあげる)
好きなウェイトをかけて、次の音量があがるまでの時間を決める。
条件分岐で、指定変数が指定された値(最終音量)まで上がったらループ脱出。
※ラベルをいれているのは、フェードイン後に続くイベントが動作しなくなるので。
ラベルの代わりに並列イベントにして、イベント一時消去又はイベント中断で利用するのも可。
応用ヽ(`Д´)ノ
BGMだけでなく、BGSやME、SEでも出来るよ!詳しくは◆BGMをMEとして再生を見てね。
応用ヽ(`Д´)ノ
音量ではなく、ピッチを徐々にあげるorさげる という事も可能。
何かの演出に使えるかも……!!?詳しくは◆徐々にピッチを変更しながら再生したい!を見てね。
◆徐々にピッチを変更しながら再生したい!
BGMが徐々にゆっくりor早くなりながら再生し続ける。これも同じく、デフォルトにないので、スクリプトコマンドを使うっす。以下のように組んでくださいっす。
基本的には◆BGMをフェードインさせたい!と同じっす。
ヽ(`Д´)ノ!重要!
BGM再生の仕様として、すでに再生されているBGMのピッチを変更再生させても
曲の最初から再生の上、フェードインにされてしまうっす。
それを回避する為、曲の続きを引き継いで再生できるBGS再生を使うっす!
◆BGMをMEとして再生したい!を利用し、フォルダに入れなくても直接指定!
まさに画像通りに記述してれば問題なし!
ヽ(`Д´)ノ応用
BGMをBGSで再生するわけなので、徐々にピッチ変更再生させる場合は
必ず、BGMを止めよう。そうしないと重なって、とんでもないことになるぞ。
フェードアウトで止めるか、BGM停止で止めるかは状況次第。実際に組んでみて決めよう。
ヽ(`Д´)ノ応用
BGS、すでに使っちゃってるんだけど……って時。
その時は◆BGMをMEとして再生したい!を利用して、そのBGSで鳴らしている曲をBGMとして再生させよう。
え?そのBGSも同じように徐々にピッチ変更再生させる……?それはBGM加工でもしないと無理なので諦めよう。
◆バルーンアイコンを追加したい!
またの名を「ふきだしアイコン」
当店でもオリジナルや改変のバルーン素材を配布していますが、
デフォルトでは追加しても再生ができないっす。
そういうスクリプト素材があるっすけど、実はこれが不要!!
スクリプトコマンドに以下のように表記。
chara = get_character(イベントID)
chara.balloon_id = バルーンID
一番最初のバルーンID(デフォルトだと"びっくり")は 1っす!0じゃないよ!
イベントIDに0をいれると、”このイベント” -1だとプレイヤーに表示するっすよ!
ヽ(`Д´)ノ応用
移動ルート(自律移動含む)に使えるのはこちら。移動ルートのスクリプトコマンドに
@balloon_id = バルーンID ※ウェイトなし
と入れることで、"このイベント"に再生するっす。
ヽ(`Д´)ノさらに応用
こちらは通常のスクリプトコマンドと移動ルートにも使えるコマンドっす。
$game_map.events[イベントID].balloon_id = バルーンID 他のイベントに再生 ウェイトなし
$game_player.balloon_id = バルーンID プレイヤーに再生 ウェイトなし
となるっす!
ま、ウェイトが使えないので、
表記が一種類になるスクリプト素材を入れる方が無難っちゃ無難っすね。
◆移動ルートでアニメーション表示させたい!
走りながら、斬撃エフェクトとか爆発とかアニメーション再生できたら
いい感じになりそうじゃん?!って方には必見!
移動ルートのスクリプトコマンドに
@animation_id = アニメーションID このイベントに再生
$game_map.events[イベントID].animation_id = アニメーションID 他のイベントに再生
$game_player.animation_id = アニメーションID プレイヤーに再生
っす!ちなみにこちらも全てウェイトなしなので、アニメーションのフレーム数分
ウェイトを挟めばおk(๑•̀ㅂ•́)و✧
ヽ(`Д´)ノ応用
これ、ギミックに使えるんですよ。当店では「アルヒラディア」の「ランスマン遺跡」にて
利用してるっす。
キャラチップから火が噴くギミックなんすけど、
流石にキャラチップで火のアニメーションは枚数が少ないし、手間なので
普通にアニメーションを再生させることで、簡単に凝ったギミックを演出できるっすよ!
当たり判定は、リージョン敷いてプレイヤーがリージョンの上にいるかどうかで
並列条件分岐するだけっす。デフォルトで可能っすよ。ガンバレ。
◆指定した位置に勝手に移動してくれないかな!?
イベント作ってたりすると、キャラクターをある場所まで移動させることあるっすよね。
上に何マス、右に何マス…… あれ?!通り過ぎた!!?
なんてあるあるっす(´・ω・`)
そんな時、このコマンドがオススメ!!
移動ルートのスクリプトコマンドで
@x, @y = X座標, Y座標
これを入れるだけで、そこまで勝手にスムーズに動いてくれる!
ヽ(`Д´)ノ注意!!ヽ(`Д´)ノ
すげー便利じゃねーか!って思ったそこのあなた!!!
実は、これ障害物スルー+向き固定状態+歩行アニメなし というふざけた仕様である。
結局、自力でマス数数えて行くしかないようです……。
経路探索系スクリプトはあるので、それを利用するのも手っすね。
◆歩行パターンを変更したい!
歩行パターン、それは歩行キャラチップでいう左、中央、右の3パターンのアレ。
片足が前に出てるのを表示させて、戦闘風にとか
キャラじゃなくても小物で、調べると違うパターンに変わる……みたいな事をする時
イベントページを切り替える事になるっすけど、
それは手間なのでスクリプトコマンドで変えちゃうっす!
@original_pattern = 番号
番号は 0=左 1=中央 2=右 となってるっす。
当店で配布している畑キャラチップとかは、これを利用するといいっす。
◆PTに入ってないメンバーも回復させたい!
編成スクリプトなどの利用でPTには入れられないメンバーがいるっすね。
全回復させない状態でメンバーを外し、宿屋等で回復する時
そのメンバーは回復出来ないため、二度手間三度手間なんてことに!
そんな時に役立つ、イベントスクリプトっす!
イベントコマンド「スクリプト」に
id = 1 #アクターID1
while id <= 16 #アクターIDの設定分。16までなら16。
$game_actors[id].recover_all
id += 1
end
これでアクターID1~16までを全回復させるっす!
ヽ(`Д´)ノ応用
コモンイベント等で全回復内容を個別に指定している場合は
$game_actors[id].recover_allの部分を
$game_actors[id].remove_state(1) #ステートID1を解除
$game_actors[id].hp += $game_actors[id].mhp #HP全回復 MP回復はhpの部分をmpに
などと適宜変更するっす。
ヽ(`Д´)ノさらに応用
aid = 1 #アクターID
bid = $game_variables[1] #変数1の値を代入
while aid <= 16
$game_actors[aid].hp += bid #変数1の値分、HP回復。
aid += 1
end
と、言うこともできるっすよ!
0コメント