MUGEN State Controller

MUGENで良いキャラを作るポイントは… 「良いキャラのソースコードを読む」->「コピペ」->「記述を理解」->「自分でアレンジ」

Type = PlaySnd

音声 > 音を再生 | 実装されたバージョン: 2002.04.14 | 対象: 音声

音を鳴らします。

関連するステートコントローラー: StopSnd, SndPan

パラメーター

Channel = チャンネル番号 (整数)

チャンネルを指定。

同じチャンネルのPlaySndが実行されると、それまで鳴っていた音は止まります。StopSndで特定の音を止める場合にも必要。また、チャンネル0は、ボイス再生専用で、再生中にmovetypeがH(やられ)になると、音が停止するという特性を持っています。-1で空いてるチャンネルを使用することになり、再生間隔が短いと、音声がオーバーラップします。キャラ音声の場合は、激しく不自然となるので、忘れずに0を指定しましょう。

省略時のデフォルト値: -1
value = グループ番号, サウンド番号 (整数, 整数)

再生する音声を指定。

10,1のようにDEFファイルのSoundで指定したSNDファイルに登録されている音声を指定して再生します。

F0,5のようにFをつけるとcommon.sndから共通の音声を再生できます。

common.sndグループ
F5,0 打撃音(弱)
F5,1 打撃音(やや弱)
F5,2 打撃音(中)
F5,3 打撃音(やや強)
F5,4 打撃音(強)
F6,0 ガード音
F7,0 倒れ着地音(弱)
F7,1 倒れ着地音(中)
F7,2 倒れ着地音(強)
F20,0 暗転音
省略不可
Volume = 音量 (整数)

音量の強弱を調整。

0が標準で、正数だと音が大きく、負数だと小さくなります。

最小値: -255 , 最大値: 255
省略時のデフォルト値: 0
;VolumeScale = 音量 (浮動小数点数)

音量を調整。

Version1.0からVolumeがVolumeScaleに変更されました。

100は100%、50は50%になります。0で無音。

最小値: 0 , 最大値: 100
省略時のデフォルト値: 100
LowPriority = 先方優先フラグ (整数)

基本的に、同じチャンネルのPlaySndが実行されると、それまで鳴っていた音は止まりますが、lowpriorityを0以外に指定すると、同じチャンネルの音が鳴ってる場合は、PlaySndが実行されなくなります。チャンネルが-1の場合は無効。

省略時のデフォルト値: ;LowPriorityが実行されません。
FreqMul = 周波数 (浮動小数点数)

周波数を倍数で指定。

1.0で音声に変化はなし、1.0より小さくすると低音、1.0より大きくすると高音になります。

省略時のデフォルト値: 1.0
Loop = 繰り返しフラグ (整数)

0以外を指定すると、サウンドがループするようになります。BGMを鳴らすときなどに?

省略時のデフォルト値: 0
Pan = パノラマ位置 (整数)

音が出る位置を変更します。正で自分の前方、負で後方位置から音が鳴ります。単位はピクセル。

0でプレイヤーの位置から音が鳴ります。

省略時のデフォルト値: 0
AbsPan = パノラマ位置 (整数)

panとほぼ同じ。panはプレイヤーを基準として位置を指定(正の値が前方、負は後方)しますが、こちらはスクリーンの中央からの位置で指定します。panとの同時指定不可。

省略時のデフォルト値: ;Panが優先して実行されます。
Persistent = ステートを再度読み込むフラグ (整数)

Persistentの値をNに設定した場合、設定したステートコントローラーはNフレーム後にもう一度実行されます。0の場合、トリガーが成立しても1回しかステートコントローラーが実行されません。※トリガーは読み込みますが、パラメーターは完全に無視されます。

Persistentが管理されている配列が初期化される条件は、ステート処理開始(ChangeState,SelfState,TagOut,TagInなどでステート移動)でTime=0の場合に実行されます。また、初期化される個数が決まっており、10個のPersistentしか初期化されません。ですので、Persistentの多様やChangeStateでの使用は避けましょう。もし、特定のステートが実行されない場合は、この仕様を疑ったほうがいいかもしれません。

その他にも、var,fvar,sysvar変数は利用できない・常時ステート([StateDef -1],[StateDef -2],[StateDef -3])では、常にPersistent=1の状態・IgnoreHitPause=1が設定されていた場合、アドレスを書き換え(Alive偽装・Persistent偽装?など)・バージョンによる動作の違いなどバグが満載です。

結論、Persistentの値が0以外の場合は省略して、TriggerTimevarを使って管理した方がいいです。

最小値: 0 , 最大値: 128
省略時のデフォルト値: 1
IgnoreHitPause = HitPauseを無視するフラグ (0か1)

IgnoreHitPauseの記述されたステートコントローラー処理がHitPause(ヒット停止時間)を無視して実行されます。基本的に1に設定しておくべきパラメーター。

パラメーター自身にvar,fvar,sysvar変数は利用できません。

攻撃を当てたり受けたりした時にVarSetしたり、Explodの演出をずれないようにしたり用途はさまざま。

最小値: 0 , 最大値: 1
省略時のデフォルト値: 0

仕様・バグ・エラー・変更点

警告文
ILLEGAL PLAYSND GROUPNO:Value第1引数に-2以下
警告文
ILLEGAL PLAYSND SNDNO:Value第2引数に-2以下
警告文
ILLEGAL PLAYSND CHANNEL.:Channelに-2以下、32以上
警告文
NON-POSITIVE FREQMUL.:FreqMulに0以下

省略した時のデフォルト値

  • [State ,PlaySnd]
  • Type = PlaySnd
  • Trigger1 = 1
  • Channel = -1
  • value = ?, ?
  • Volume = 0
  • ;VolumeScale = 100
  • LowPriority = ;LowPriorityが実行されません。
  • FreqMul = 1.0
  • Loop = 0
  • Pan = 0
  • AbsPan = ;Panが優先して実行されます。
  • Persistent = 1
  • IgnoreHitPause = 0

パラメーターの読み込み順

Channel(1) => value(2, 3) => Volume(4) => ;VolumeScale(4) => LowPriority(5) => FreqMul(6) => Loop(7) => Pan(8) => AbsPan(8) => Persistent(?) => IgnoreHitPause(?) =>


*バージョンや実行環境,パラーメーターの指定の仕方によって、読み込まれる順番が変わる可能性があります。参考程度なものだと思ってください。
公開日:
最終更新日:
目次
この記事は役に立ちましたか?
ご意見・ご要望はございますか?
記事に不備があった場合

不備があればGithubTwittersuteadddayov@gmail.comにご報告下さい。

記事を編集してみませんか?

ページ編集・翻訳にご協力いただける方を募集しております。お気軽にご連絡下さい。

We are looking for someone who can cooperate on page editing / translation. Please feel free to contact us.