DHQの雑記とか

mugen関連でいろいろと

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

リバーサル行動のトリガーについて

今回はリバーサル行動のトリガーについて。
まず最初に断っておきますが、hitoverをchangestateのトリガーに仕込んで
リバーサル行動とするのはやめましょう。

まずhitoverをchangestateのトリガーに仕込んでリバサ行動とすることの問題点について。
mugenの処理順序は
-1ステートの処理→0番以降のステートの処理→次のフレームへ→-1ステートの処理→・・・
となっています。ここでhitoverが成立するフレームでのctrlの挙動は
フレームの開始時点でhitover成立→-1ステートの処理(ここではctrl無効)
→0番以降のステート(ここでctrl有効)→次のフレームへ→-1ステートの処理(ここではctrl有効)
となりますので、-1ステートでhitoverをトリガーにしてchangestateを実行した場合、
ctrlをトリガーにした場合と比較すると、1F速くchangestateが実行できるようになり、
他のキャラではコンボになる状況や連ガになる状況に割り込めてしまうこともありえます。
以上がhitoverをchangestateのトリガーに仕込んでリバサ行動とすることの問題点。


続いて、リバーサル行動を取った時に、何かしらのステコンを実行することを考慮に入れた記述を紹介。
prevestateno=151||prevestateno=153||prevestateno=155
prevestateno=5001||prevestateno=5011などでリバーサル行動フラグを立てていた場合の代替記述です。

1.-2ステートに以下の記述を追加(ここではvar(0)を使用)
[state -2, リバーサル判定解除1]
type = varset
trigger1 = var(0) < 0
trigger2 = var(0) = [2,9]
v = 0
value = 0

[state -2, リバーサル判定]
type = varadd
trigger1 = var(0) = [1,8]
v = 0
value = 1

2.hitoverを使ったくらいステートからのchangestate、
もしくはgethitvar(ctrltime)などをトリガーとしたctrlsetと同じタイミングで変数に数値を代入

例:立ちガードからの復帰の場合

; SGUARDHIT2 (knocked back)
[Statedef 151]
type = S
movetype= H
physics = S
anim = 150

[State 151, 1]
type = HitVelSet
trigger1 = Time = 0
x = 1

[State 151, 2]
type = VelSet
trigger1 = Time = GetHitVar(slidetime)
trigger2 = HitOver
x = 0

[State 151, 3]
type = CtrlSet
trigger1 = Time = GetHitVar(ctrltime)
trigger1 = var(0) := 1 || 1;ctrlsetが実行された場合、var(0)に1を代入
value = 1

[State 151, Hi to Lo]
type = StateTypeSet
trigger1 = statetype = S && command = "holddown"
statetype = C
physics = C

[State 151, Lo to Hi]
type = StateTypeSet
trigger1 = statetype = C && command != "holddown"
statetype = S
physics = S

[State 151, リバーサル判定2]
type = varset
trigger1 = hitover
trigger1 = !ctrl
v = 0
value = 1

[State 151, 4]
type = ChangeState
trigger1 = HitOver
value = 130
ctrl = 1

3.リバーサルで実行したことのフラグを各ステートに追加
例えばリバーサルで必殺技を出した時にリバーサルexplodを出したい場合、
全ての必殺技に以下の記述を追加。

[state 1000, リバーサル判定]
type = varset
trigger1 = time = 0
trigger1 = var(0) = 2
v = 0
value = 10

リバーサル行動であることの判断には、var(0) = 10を使用します。
var(0)はリバーサル判定の必要がなくなった時点で、可能な限り早いタイミングで0に戻しましょう。
explodを出したいだけなら、explodのステコン直下に置いておくぐらいでちょうどいいです。
  1. 2012/10/08(月) 17:32:08|
  2. キャラ製作の豆知識
  3. | トラックバック:0
  4. | コメント:0
<<mugenでの複数ヒットのさせ方と安定性向上手段について | ホーム | プレイヤー操作動画上げてみました その29>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dhq.blog137.fc2.com/tb.php/72-839b14fe
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

DHQ

Author:DHQ

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (0)
お知らせ (2)
mugenの仕様 (16)
mugenのAI (3)
キャラ製作の豆知識 (31)
動画について (32)

FC2カウンター

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

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