Profile

アメリ

Author:アメリ
キャラ紹介

line
カテゴリ
AIR (1)
Pos (1)
Var (1)
FAQ (1)
line
不許カウンター
line
最新記事
line
最新コメント
line
最新トラックバック
line
月別アーカイブ
line
sub_line
カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
line
検索フォーム
line
リンク
line
RSSリンクの表示
line
QRコード
QR
line
ブロとも申請フォーム

この人とブロともになる

line
sub_line
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
line
ステートについて(statedef,state,ChangeState,SelfState,stateno,prevstateno...)

[statedef 1000]
 ステートの定義で番号が必要です。同じステートを複数定義すると後に書いた方が使われます。本当に?
defファイルでst=char.defと言う指定をしていると思いますが下にある物が優先されます。

 ※一行で256文字を越えない様に!winmugenだとトリガー等が実行されません注意!


コメント
 ;(セミコロン)を付けるとそれ以降の文字が行末まで記述とは関係のない部分としてみなされます。複数行を一気にコメントアウトする事は出来ないのでエディタの文字挿入とかでやってください。
 FightersFactoryだとstateの一行上のコメントが表示されるので一個上はそのステートを表す言葉にしておくと良いです。
;----------------------------------------------------------------------
; this is double atack. slide attack and upper attack.
;
; special punch
[statedef 1000]
type = S
movetype = A
phisics = S
anim = 1000
ctrl = 0
poweradd = 0
velset = 0,0

[state 1000, need at least 1 controller]
type = Null
trigger1 = 0
;----------------------------------------------------------------------



[state ]
 ステートコントローラを入れたい場合に書きます、一つのステートに最低一個は必要です。stateの後に半角スペースが必要でその後は説明文になるので基本的には何でも良いです。[state]で検索するとスペースがないのがわかるかも。
 説明は単に読み易さの為に書くのだけれど、書く場合はステート番号と何をしているか書いた方が良いです。ちゃんと書いておくと突然そこを見た場合でもどのステートの何の処理かすぐに分かります。エラー落ちの場合にはこれが表示されるので割と重要です。

;----------------------------------------------------------------------
[state 1000, Hitdef]
type = Hitdef
...省略
;----------------------------------------------------------------------

 読み辛くならない様に、特殊な事をしている場合以外は他の部分には説明を入れる必要はないです。
特に、忘れた時でも分かる様な説明を付けないと意味がないです。


trigger1
 trigger1は一つのステートコントローラーに最低1個必要です。


ChangeState
 別のステートに行く時に使います。ChangeState後はそのステートの始まりからになるので例え同じステートに移ってもTime=0になります。
 注意点としては次のステートが実行されるのでTime=0で次々とステートを移るとHitdefの様に1フレーム残っていないと効果がない物が発生しません。2つのステート間で移動する時もTime=0のままステート移動を繰りかえしてしまうと一回の処理で2500loopエラーになります。
 時はスクリーンパックに依存しますが、ラウンドコール後にroundstate=2になりstate 0へChangeStateしctrl=1になります。また、posも初期位置に戻ります。その為、ラウンドコール前にctrl=1になっていると自分若しくは相手に不具合が起きる恐れがあります。相手のステートに居る場合に-2ステートでChangeStateすると当然相手のステートを参照します。


SelfState
 ChangeStateと違って自分のステートを参照します、つまり相手のステートに居る場合に強制的に戻る事が出来ます。基本的にはReversaldefで相手に自分のステートを参照させている時に相手のステートに戻す場合に使います。
 投げ技、打撃投げの様に通常の怯み以外の特殊な動きをさせる場合にはこれで戻さないと最悪の場合相手が動かなくなります。投げの終わりに相手のダウンステートに戻したりしておけば大丈夫でしょう。相手が空中受け身を取れる前に行う必要があります。


-3,-2,-1ステート
[statedef -3]
[statedef -2]
[statedef -1]
 実行される順番は現在のステート、-3ステート、-2ステート、-1ステートです。当たり前ですがp1のステートを解決した後にp2のステートが解決されます。なのでp1側が基本的には有利です。ガードはp1が先に行動する都合で1フレーム不利だった気がします。
 自分の番(ターン)が来た場合に自分のステートに居る場合は-3、-2、-1の順に参照します。もしも相手のステートに居る場合は現在の相手のステート、-2ステートの順に参照します。
 このことから-2は常時実行ステート(常時監視ステート)、-3,-1ステートは準実行ステート(準監視ステート)と呼ばれています。なのでゲージ等の固有表示を-2以外の実行ステートで行うと特殊な攻撃の際に表示されなくなったりします。その場合にはpause中等に動くかどうかも設定しておく必要があります。通常は-1ステートでコマンドを受け付けるので何らかの理由で相手のステートで止まってしまった場合には立ち状態の様な共通ステートでも動けなくなります。

 デバッグモードでプレイヤー切り替えをして現在の状態を確認してください。標準では白色が自分のステート、黄色っぽい色が相手のステートです。

 そう言えば最近調べた所によると一番最初に実行されるのはラウンドの開始になる191ステートで191>-3>-2>-1>191>-3>-2>-1と言う具合になりました。相手のステートとの兼ね合いを考えるとステート実行後に常時実行なのでしょうか。最初のフレームでChangeStateをすると191>195>-3>-2>-1の様になりました。
 2ラウンド目からは5900から0になっているようです。

特別なステート
 主にガードステートや勝利、敗北のステート等のMUGEN本体が管理しているステートです。そのステートでしか効果がなかったりそのステートでないとちゃんと動いていると認識してくれないステートがあります。主に200未満のステートです。
 CNS Formatに括弧書きで書いてあるのが大体そうです。


stateno
 相手のステートに居てもちゃんと参照できます。但し相手のステートかどうかはこれだけでは判断できません。


prevstateno
 基本的にmugenの説明にある食らいステート中は0になります。その他の場合にしか参照できないので注意して扱う必要があります。statenoを変数に入れた方が確実です。


p2stateno
 食らった相手に自分のステートを参照させます。p2と書いてありますが食らった相手の事でヘルパーが食らっても本体となるプレイヤーに効果が行きます。reversaldef以外にも記述でき、hitdefで投げ等の特殊な食らい状態にしたい場合に使います。但しprojに付けたりすると酷いので普通は付けません。
 基本的に食らいの最後に相手をselfstateさせてあげないと動けなくなるので注意してください。ここら辺はヘルパーの扱いと一緒なので変なステートに移動して相手が留まらない様に気を付けましょう。
 尚、Hitoverrideしている相手には効きません。余談ですがTargetStateはHitがないので効きます(ガード中以外)。勿論SelfStateしてくる相手には効果はそれほどありません。


最後に
 ステートコントローラーの説明はしっかり読みましょう。
 疑問があったら色々作って実行してみると良いです。
 自分で試しやがれです!
スポンサーサイト
line
line

line
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。