なんか尻切れトンボになってしまった射撃のヒットサウンド関係の
ステートについての補足と解説をします。
以下のステートは実証が不十分ですので
実際に使用する際にはアレンジが必要になるかもしれません。
(誰か同じことしてる人がすでにいそう。)
メリット
・同時に複数の音が鳴らないのでうるさくない。(多段ヒットの射撃で顕著。)
・ヒットサウンドがチャンネルを占領しない。(MUGEN1.0限定?)
・グレイズ音に応用しても良い。
デメリット
・(下の方法だと)長いヒットサウンドが途中で切れる。
(同時に1種類しか鳴らせない。)
・変数が必要。
・3Fごとぐらいに音を出す命令をすると音飛びすることがある。
(処理が遅れる?)
・ヘルパーが出した射撃にこの方法を使うと、
難易度が跳ね上がる。(不可能では無いと思う。)
・音が2Fほど遅延する。
今回の方法で特別に必要な物、条件
・本体の変数一つ。
・サウンドファイルでヒットサウンドのグループ番号(1つめの数)を
統一しておく。
例)
※この例ではガードサウンドも同じ変数で実装しています。
本体の変数
・var(37) = 呼び出すサウンドのイメージ番号(2つめの数)
var(37) < -1
=ガードサウンド(今回は-2を代入)
var(37) = -1
=サウンドを鳴らさない(デフォルト)
var(37) = 0以上のヒットサウンドのイメージ番号
以下、ステート本体
;======================================
;---------------------------------------------------------------------------
; 本体
;********************************
[Statedef -2]
[state -2, ヘルパーヒットサウンド]
type = PlaySnd
trigger1 = var(37) > -1
trigger1 = RoundState > 1 ;開幕のヒットサウンド暴発防止
value = 0 ,var(37)
channel = 3 ;なるべくチャンネルは専用にした方が良い
lowpriority = 0 ;同じチャンネルで鳴っている音を中断
ignorehitpause = 1 ;ヒットポーズ無視
[state -2, ヘルパーガードサウンド]
type = PlaySnd
trigger1 = var(37) < -1 ;ガードサウンドのトリガー
value = 1 ,0
channel = 3 ;ガードサウンドのチャンネルは上とは分けた方が良いかも
lowpriority = 0
ignorehitpause = 1
[state -2, var(37)ヘルパーヒットサウンド記憶] ;音を鳴らし終わったら元に戻す
type = varset
trigger1 = var(37) != -1
var(37) = -1
ignorehitpause = 1
;---------------------------------------------------------------------------
; ここからヘルパー
;********************************
[statedef 射撃へルパーの攻撃部分のステート]
;[State -1, ヒット定義]
;type = HitDef
[state -1, var(37)ヒットサウンド]
type = parentvarset
trigger1 = movehit ;ヒット時のトリガー
var(37) = 5 ;鳴らしたいヒットサウンドのイメージ番号
ignorehitpause = 1
[state -1, var(37)ガードサウンド]
type = parentvarset
trigger1 = !movehit ;ガード時のトリガー
trigger1 = movecontact ;同上
var(37) = -2 ;ガードサウンドのトリガー
ignorehitpause = 1
[state -1, ヒットフラグ解除] ;これをしない場合、persistent = 0を上2つにつける
type = MoveHitReset
trigger1 = movecontact
trigger2 = movehit
trigger3 = movereversed
ignorehitpause = 1
;======================================
※グレイズの場合にはサウンドを鳴らす部分と変数を元に戻す部分に、
gametime%2 = 0のトリガーを入れると良いかも。