TOP | ブログ一覧へ

RPGツクールMVで足音を鳴らす方法 [編集]

thumb

0000/01/01
カテゴリ: ツクールMV | タグ: 古い記事


草原を歩いた草を踏む音がして、砂漠なら砂の音、水上なら水音、フローリングには木の音が鳴っていてもいいじゃない!!

足音なんて今時のゲームならどんなゲームにもありそうな要素ですが、ツクールMVにはどうもそんな機能は付いていないようなので、自分で作っちゃいました。

基本形

1歩移動するごとに任意のSEが鳴るようにします。

1.使う変数とコモンイベントを決める

まず歩数を一時的に保存する変数が必要になるので、決めておきます。

次に足音を設定するコモンイベントが必要になるので、使うコモンイベントIDを決めておきます。

fs_1

2.並列処理イベントを作る

並列処理のマップイベントを作り、イベントコマンドからスクリプトを選んで、このスクリプトをコピペしてください。

//足音用・並列処理イベント created by Had2Apps
var MemoVal  = 1  /* 歩数を一時保存する変数ID */
var CEventID = 1  /* 1歩移動すると飛ぶコモンイベントID */
/* -------------------------------- */
if($gameParty.steps()!=$gameVariables.value(MemoVal)){
  this.setupChild($dataCommonEvents[CEventID].list, 0)
  $gameVariables.setValue(MemoVal,$gameParty.steps())
}

fs_2

3.コモンイベントを書く

1で決めた足音を設定するコモンイベントの処理内容に、イベントコマンド→SEの演奏で、足音として演奏させたいSEを置けば完成です!

fs_3

地形タグ、リージョンIDで足音を変更する

地形タグまたはリージョンIDで足音を変更し、音量、ピッチ、位相をランダムで変化させます。

4.コモンイベントを作りなおす

コモンイベントの処理内容を一旦全消去し、新たな処理を書き加えて行きます。

5.足音の基準を定める

変数の操作で、

変数→単独:地形タグ等を格納する任意の変数
操作→代入
オペランド→スクリプト

と設定します。

スクリプト入力欄には、地形タグで足音を変えたい場合は

リージョンIDで足音を変えたい場合は

と入力してください。

fs_5

6.スクリプトを貼る

変数の操作の下にスクリプトのイベントコマンドを追加し、以下のスクリプトをコピペします。

//足音用・SEの演奏(ランダムエフェクト) created by Had2Apps
var ValueID   = 15;       var Param = 2
var SoundName = "Knock";
var VolumeMin = 100;   var VolumeMax = 100; //    0 - 100
var PitchMin  = 100;   var PitchMax  = 100; //   50 - 150
var PanMin    = 0;     var PanMax    = 0;   // -100 - 100
/* -------------------------------- */
if($gameVariables.value(ValueID)==Param){
PanMin*=1.5; PanMax*=1.5; AudioManager.playSe({"name":SoundName,
"volume":Math.floor(Math.random()*(VolumeMax-VolumeMin))+VolumeMin,
"pitch":Math.floor(Math.random()*(PitchMax-PitchMin))+PitchMin,
"pan":Math.floor(Math.random()*(PanMax-PanMin))+PanMin});}

7.スクリプトを編集する

まず ValueIDの値を5で設定した地形タグ等を格納する変数ID にします。

これでParamで指定した地形タグorリージョンIDに主人公が踏み込むと指定したSEが鳴るようになります。

fs_6

8.スクリプトを複製する

7で編集したスクリプトをコピー&ペーストで複製し、ValueID以外のパラメータを変更すると、別の地形タグorリージョンIDで異なるSEを鳴らすことができます。

fs_8

主人公の画面Xに同期して位相を変える

音量とピッチをランダムに変化させる上に、主人公が左にいれば左から、右にいれば右から聞こえるようにします。

9.スクリプトを書き換える

6にあるスクリプトの代わりに、以下のスクリプトを使います。

//足音用・SEの演奏(画面X座標で位相変化) created by Had2Apps
var ValueID   = 15;       var Param = 2
var SoundName = "Blow1";
var VolumeMin = 100;   var VolumeMax = 100; //    0 - 100
var PitchMin  = 100;   var PitchMax  = 100; //   50 - 150
/* -------------------------------- */
if($gameVariables.value(ValueID)==Param){
AudioManager.playSe({"name":SoundName,
"volume":Math.floor(Math.random()*(VolumeMax-VolumeMin))+VolumeMin,
"pitch":Math.floor(Math.random()*(PitchMax-PitchMin))+PitchMin,
"pan":((this.character(-1).screenX()/SceneManager._screenWidth)-0.5)*300});}

また、7の状態のスクリプトの「var PanMin」の行(6行目)から最後までを、以下のスクリプトで上書きしても同じ効果が得られます。

/* -------------------------------- */
if($gameVariables.value(ValueID)==Param){
AudioManager.playSe({"name":SoundName,
"volume":Math.floor(Math.random()*(VolumeMax-VolumeMin))+VolumeMin,
"pitch":Math.floor(Math.random()*(PitchMax-PitchMin))+PitchMin,
"pan":((this.character(-1).screenX()/SceneManager._screenWidth)-0.5)*300});}

これを使うことで、効果を得ることができます。

複数の効果音をランダムに選ぶ

複数の効果音からランダムに選出し、音量とピッチをランダムに変化させ、位相を画面Xと同期して変化させるようにします。

10.スクリプトを書き換える

6にあるスクリプトの代わりに、以下のスクリプトを使います。

//足音用・SEの演奏(複数SE・画面X位相変化) created by Had2Apps
var ValueID   = 15;       var Param = 2
var SoundNames = ["Blow1","Crossbow","Knock"];
var VolumeMin = 100;   var VolumeMax = 100; //    0 - 100
var PitchMin  = 100;   var PitchMax  = 100; //   50 - 150
/* -------------------------------- */
if($gameVariables.value(ValueID)==Param){
AudioManager.playSe({"name":SoundNames[Math.floor(Math.random()*SoundNames.length)],
"volume":Math.floor(Math.random()*(VolumeMax-VolumeMin))+VolumeMin,
"pitch":Math.floor(Math.random()*(PitchMax-PitchMin))+PitchMin,
"pan":((this.character(-1).screenX()/SceneManager._screenWidth)-0.5)*300});}

また、9の状態のスクリプトの3行目を

var SoundNames = ["Blow1","Crossbow","Knock"];

8行目を

AudioManager.playSe({"name":SoundNames[Math.floor(Math.random()*SoundNames.length)],

で上書きしても同じ効果が得られます。

おまけ

画面解像度を得る

幅:SceneManager._screenWidth
高さ:SceneManager._screenHeight

乱数を使う

Math.floor(Math.random()*(最大値-最小値))+最小値

歩数を得る

$gameParty.steps()

コモンイベントを呼ぶ

this.setupChild($dataCommonEvents[コモンイベントID].list, 0)

以上です。

足音機能ぐらい、デフォでついてて欲しかったなあ

あと、意外と足音に最適な音がデフォ素材に入ってない・・・

関連記事: ツクールMVの条件分岐で地形タグを調べる方法

砂漠に立っている時だけ足が遅くなるとか、特定の地形ではHPが5秒単位で回復するとか、そういう地形・タイル単位で何かイベントを起こしたい

見に行く



シェア


TOP | ブログ一覧へ