MUGEN State Controller

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

Type = AfterImageTime

残像 > AfterImageの残像時間を変更 | 実装されたバージョン: 2002.04.14 | 対象: ステート実行者自身

AfterImageのTime(残像表示時間)を上書きすることができます。

AfterImageを連続で実行した場合、今まで表示されていた残像が消えてしまいます。なので、AfterImageのTimeを持続させたい場合はAfterImageTimeを使用します。

ただし、AfterImageTimeで残像を消去する処理は厳しいです。なぜなら、残像が表示される時間を変更するだけなので、残像の履歴が残っており履歴がなくなるまで残像が表示され続けます。ですので、完全に消去した場合はAfterImageでTime=0に設定し、1フレームだけ実行することによって一瞬で残像を消去できます。

また、AfterImageが実行されていない時は、AfterImageTimeのパラメータは無視されます。例えば、"Time = var(0) := 9"としていた場合、代入が実行されません。

関連するステートコントローラー: AfterImage

パラメーター

Time = 新しい継続時間 (整数)

AfterImageのTimeパラメータを上書きします。

また、AfterImageの終了時間はそのフレームから元のAfterTimeのTimeGapとLengthのTimeGap*Length+Time-1になります。

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

※60フレーム=1秒

最小値: -1 , 最大値: 2147483627
省略時のデフォルト値: ?
; Value = 新しい時間 (整数)

Timeの代わりにValueと書いても同じ動作をします。

代替書式
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

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

不明 AfterImageのTimeGapが1に設定されていない状態で、AfterImageTimeを使用するとフレームの位置がリセットされる?
警告文
SET ILLEGAL AFTERIMAGETIME:Timeに-2以下

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

  • [State ,AfterImageTime]
  • Type = AfterImageTime
  • Trigger1 = 1
  • Time = ?
  • ; Value = ?
  • Persistent = 1
  • IgnoreHitPause = 0

コードサンプル

Timeの時間で残像が消える場合

  • [State 100]
  • Type = Afterimage
  • Trigger1 = Time = 0
  • Trans = None
  • Length = 60
  • TimeGap = 1
  • FrameGap = 1
  • Time = 60
  • PalColor = 256
  • PalInvertAll = 0
  • PalBright = 0, 0, 0
  • PalContrast = 256, 256, 256
  • PalPostBright = 0, 0, 0
  • PalAdd = 0, 0, 0
  • PalMul = 1, 1, 1

AfterTimeImage value = 0にした場合

  • [State 100]
  • Type = Afterimage
  • Trigger1 = Time = 0
  • Trans = None
  • Length = 60
  • TimeGap = 1
  • FrameGap = 1
  • Time = 60
  • PalColor = 256
  • PalInvertAll = 0
  • PalBright = 0, 0, 0
  • PalContrast = 256, 256, 256
  • PalPostBright = 0, 0, 0
  • PalAdd = 0, 0, 0
  • PalMul = 1, 1, 1

  • [State 100]
  • Type = AfterImageTime
  • Trigger1 = Time = 60
  • Value = 0

AfterImageでAfterImageを消去した場合

  • [State 100]
  • Type = Afterimage
  • Trigger1 = Time = 0
  • Trans = None
  • Length = 60
  • TimeGap = 1
  • FrameGap = 1
  • Time = 60
  • PalColor = 256
  • PalInvertAll = 0
  • PalBright = 0, 0, 0
  • PalContrast = 256, 256, 256
  • PalPostBright = 0, 0, 0
  • PalAdd = 0, 0, 0
  • PalMul = 1, 1, 1

  • [State ]
  • Type = AfterImage
  • Trigger1 = Time = 60
  • Time = 0

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

Time(1) => ; Value(1) => Persistent(?) => IgnoreHitPause(?) =>


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

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

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

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

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