MUGEN State Controller

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

Type = BGPalFX

色の操作 > 背景の色を変更 | 実装されたバージョン: 2002.04.14 | 対象: 背景


背景のパレットに指定色を加算・乗算します。

全画面に加算する場合はAllPalFX,キャラクターのみに加算する場合はPalFX,指定色で塗りつぶしたい場合はEnvColor



バージョンごとの変更点・バグ・エラー・仕様

内容
-InvertAllAdd,Sub,Mulなどで処理をしていると正しく機能しません。
警告文INVALID PALFX TIME: Timeに-2以下
警告文INVALID PALFX COLOR: Colorに-1以下、257以上
警告文INVALID PALFX MUL VALUE: MULに-1以下


パラメーター

Time = 持続時間 (整数)

効果の持続時間をフレーム単位で指定します。

ステートが変わっても有効なので、パレット変更中にやられステートに移行しても効果は持続します。この現象を回避したければ、Time=1にして、トリガーで時間を調整します。ただし、その場合SinAddは機能しません。または、効果を終わらせたい時に別のAllPalFXでTime=1をだけを指定して値を上書きします。ただし、この場合相手プレイヤーのAllPalFXも消してしまいます。

-1で表示を永続化。0では表示されず、1以上か-1を指定しなければなりません。

※60フレーム=1秒

最小値: -1 , 最大値: 2147483647
省略時のデフォルト値: 0
Color = 彩度 (整数)

パレットの彩度を下げます。

例: 彩度を低くした時、明るい色ほど白・暗い色ほど黒に近づきます。
 
    
        
           
        
    
 
0←        →256

最小値: 0 ;グレースケール , 最大値: 256 ;変化なし
省略時のデフォルト値: 256
Add = 加算する赤色, 加算する緑色, 加算する青色 (整数, 整数, 整数)

指定した色をパレットに加算します。

暗い色ほど指定色に近づき、色の合計値が大きくなるほど、色が明るくなります。

例:  Add=256,0,0の場合、 黒(0,0,0)は 赤(256,0,0)になりますが、 白(256,256,256)は 白(256,256,256)のままです。

最小値: -256, -256, -256 ;黒 , 最大値: 256, 256, 256 ;白
省略時のデフォルト値: 0, 0, 0
Mul = 合成する赤色, 合成する緑色, 合成する青色 (整数, 整数, 整数)

基本色(パレット+Add+SinAddの合計値)に合成色(Mulで指定した値)/256を乗算します。

合成色の値が小さくなるほど、色が暗くなります。明るい色ほど合成色に近づきます。

例:  Add=64,256,64,Mul=1,256,1の場合、 白(256,256,256)は 緑(1,256,1)になりますが、 黒(0,0,0)は 黒(0,0,0)のままです。

最小値: 1, 1, 1 , 最大値: 256, 256, 256 ;変化なし
省略時のデフォルト値: 256, 256, 256
SinAdd = 周期する赤色, 周期する緑色, 周期する青色, 周期 (整数, 整数, 整数, 整数)

指定色を、指定周期(単位はフレーム)の正弦波でパレットに加算/減算。

周期が大きいほどゆるやかに色が変化します。

例:  SinAdd=0,0,256,20, Add=0,0,0,Mul=256,256,256の場合、 (128,128,128)は、5F後 (128,128,256)になり、10F後 (128,128,128)に戻り、15F後 (128,128,0)、20F後 (128,128,128)に戻る、という周期を繰り返します。

省略時のデフォルト値: 0, 0, 0, 0

InvertAll = 色反転フラグ (0か1)

色を反転するか・しないかのフラグです。

例:  (0,0,0)→ (256,256,256), (0,252,0)→ (256,4,256), (256,0,0)→ (0,256,256)

最小値: 0 ;色が反転しない , 最大値: 1 ;色が反転する
省略時のデフォルト値: 0

Persistent = HitPause無視時間 (整数)

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


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

  • [State ,BGPalFX]
  • Type = BGPalFX
  • Trigger1 = 1
  • Time = 0
  • Color = 256
  • Add = 0, 0, 0
  • Mul = 256, 256, 256
  • SinAdd = 0, 0, 0, 0
  • InvertAll = 0
  • Persistent = 1
  • IgnoreHitPause = 0


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

Time(1) => Color(2) => Add(3, 4, 5) => Mul(6, 7, 8) => SinAdd(9, 10, 11, 12) => InvertAll(13) => Persistent(?) => IgnoreHitPause(?) =>


*バージョンや実行環境,パラーメーターの指定の仕方によって、読み込まれる順番が変わる可能性があります。参考程度なものだと思ってください。


注意事項

表示される色の処理順
==========各条件を以下のように定義する。==========
基本色:
Add = Add_赤色(AR), Add_緑色(AG), Add_青色(AB)
SinAdd = Sin_赤色(SR), Sin_緑色(SG), Sin_青色(SB), 周期(P)

合成色:
Mul = Mul_赤色(MR), Mul_緑色(MG), Mul_青色(MB)

経過時間:(T) ※単位はフレーム、1秒=60フレーム
円周率:(Pi)

変更する色:
Palette_赤色(PR), Palette_緑色(PG), Palette_青色(PB)

==========処理の流れ==========
処理する色 = Palette_赤色(PR), Palette_緑色(PG), Palette_青色(PB)

彩度(Color)
彩度を調整した色 = Color_赤色(CR), Color_緑色(CG), Color_青色(CB)

経過時間(T)に表示される色は
赤要素(RR) = (CR + AR + SR * Sin(2*Pi*T/P)) * MR/256
緑要素(RG) = (CG + AG + SG * Sin(2*Pi*T/P)) * MG/256
青要素(RB) = (CB + AB + SB * Sin(2*Pi*T/P)) * MB/256

色反転(InvertAll)
反転した赤要素(IR) = 256-RR
反転した緑要素(IG) = 256-RG
反転した青要素(IB) = 256-RB

結果色(IR, IG, IB)が表示されます。
 
公開日:
最終更新日:
この記事は役に立ちましたか?
ご意見・ご要望はございますか?
記事を編集してみませんか?

問題点があればGithubTwittersuteadddayov@gmail.comにご報告下さい。また、ページ編集にご協力いただける方を募集しております。お気軽にご連絡下さい。Please report any problems to the Github · Twitter · suteadddayov@gmail.com. In addition, we are looking for the person who cooperate with page editing and translation. Please do not hesitate to contact me.