DHQの雑記とか

mugen関連でいろいろと

スポンサーサイト

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

注釈付きくらいコモン

win版mugenのcommon1.cnsに記載されている5000番~5071番ステートについて、
簡単に注釈を加えました。日本語を含む行は、全て自分が追加したものです。
余計な誤解を生まないよう、同じ効果のステコンに対しては全く同じ注釈を加えているため、
同じような注釈が並んでいますがご容赦下さい。
ブログの記事のままでは非常に読みづらいので、エディタなどへコピペされた上でお読み下さい。
なお、ForceFeedbackは省略してあります。



; HITG_SHAKE
;statetype=Sで攻撃を受けたときに最初に飛ぶステート。
;statetype=Cで、forcestandが付いた攻撃を受けたときもこのステートに飛びます。
;なおgroundtypeがtripの攻撃を受けたときはこのステートではなく5070番に飛びます。
[Statedef 5000]
type = S
movetype= H
physics = N
velset = 0,0

[State 5000, 1] ;Anim for HIT_LIGHT to HIT_HARD
type = ChangeAnim
trigger1 = Time = 0
trigger1 = GetHitVar(animtype) != [3,5]
value = ifelse((GetHitVar(groundtype) = 1),5000,5010) + GetHitVar(animtype)
;受けた攻撃のanimtypeがback、up、diagup以外の時はこのステコンが作動します。
;groundtypeがlowの攻撃を受けたときは5010番台のanimが、
;それ以外の時は5000番台のanimが呼び出されます。

[State 5000, 2] ;Anim for HIT_BACK
type = ChangeAnim
trigger1 = Time = 0
trigger1 = GetHitVar(animtype) = [3,5]
value = 5030
;実質的に、受けた攻撃のanimtypeがbackの時、
;または5051番anim、5052番animが存在しない時にこのステコンが作動します。
;5030番animは、一般的な吹き飛びの初動モーションに当たります。

[State 5000, 3] ;Anim for HIT_UP/HIT_DIAGUP (only if it exists)
type = ChangeAnim
trigger1 = Time = 0
trigger1 = (GetHitVar(animtype) = [4,5]) && (SelfAnimExist(5047 + GetHitVar(animtype)))
value = 5047 + GetHitVar(animtype) ;5051 - 4 + type
;受けた攻撃のanimtypeがupもしくはdiagupの時に、このステコンの判定が行われます。
;upは垂直打ち上げ、diagupはきりもみ吹っ飛びに当たり、
;upの時は5051番、diagupの時は5052番animが呼び出されます。
;それぞれの専用animが存在しないときは、5030番animが呼び出されたままです。

[State 5000, 4] ;Freeze anim
type = ChangeAnim
trigger1 = Time > 0
value = anim
;hitshakeoverが成立するまでは、表示されるスプライトはanimの1枚目に固定されます。
;そのため、ヒットストップ中はずっと同じスプライトが表示されます。

[State 5000, 5] ;State type gets set to aerial if getting hit up
type = StateTypeSet
trigger1 = Time = 0
trigger1 = GetHitVar(yvel) != 0 || GetHitVar(fall)
trigger2 = Pos Y != 0
statetype = a
;受けた攻撃でy方向の速度ベクトルが付加されたり、ダウン属性(fall)のついた攻撃を受けると
;statetypeが即座にAになります。
;これらの攻撃を受けていてもヒットストップ中は地上にいるように見えますが、
;内部処理上は空中判定です。なお、pos Yが0以外の状態で攻撃を受けたときも空中判定になります。

[State 5000, 6]
type = ChangeState
trigger1 = HitShakeOver
trigger1 = GetHitVar(yvel) = 0 && !GetHitVar(fall)
value = 5001 ;HITG_SLIDE
;ヒットストップ終了後、y方向の速度ベクトルがなく、ダウン属性もない場合は、
;地上立ちくらいノックバック用のステートに飛びます。

[State 5000, 7]
type = ChangeState
trigger1 = HitShakeOver
value = 5030
;すぐ上のステコンが作動しなかったときは、空中吹っ飛び用のステートに飛びます。

;---------------------------------------------------------------------------
; HITG_SLIDE
;地上立ちくらいノックバック用ステート
[Statedef 5001]
type = S
movetype= H
physics = S

[State 5001, 1]
type = HitVelSet
trigger1 = Time = 0
x = 1
;受けた攻撃のヒットベクトルに応じた初速度がかかります。

[State 5001, 2]
type = ChangeAnim
trigger1 = AnimTime = 0
value = 5005 + GetHitVar(animtype) + (GetHitVar(groundtype)=2)*10
;groundtypeがlowの攻撃を受けたときは5010番台のanimが、
;それ以外の時は5000番台のanimが呼び出されます。

[State 5001, 3] ;Stop sliding back
type = VelMul
trigger1 = Time >= GetHitVar(slidetime)
x = .6
;gethitvar(slidetime)が終わった後、
;constで規定されているphysicsに応じた摩擦に加えてさらに強い減速が始まります。

[State 5001, 4]
type = VelSet
trigger1 = HitOver
x = 0
;hitoverが成立すると、その時点で速度が止まります。

[State 5001, 5]
type = DefenceMulSet
trigger1 = HitOver
value = 1

[State 5001, 6]
type = ChangeState
trigger1 = HitOver
value = 0
ctrl = 1
;hitoverが成立した時点で立ちニュートラルステートに戻ります。

;---------------------------------------------------------------------------
; HITC_SHAKE
;statetype=Cで、forcestandのない攻撃を受けた時はこのステートに飛びます。
;なおgroundtypeがtripの攻撃を受けたときはこのステートではなく5070番に飛びます。
[Statedef 5010]
type = C
movetype= H
physics = N
velset = 0,0

[State 5010, 1] ;Anim for HIT_LIGHT to HIT_HARD
type = ChangeAnim
trigger1 = Time = 0
trigger1 = GetHitVar(animtype) != [3,5]
value = 5020 + GetHitVar(animtype)
;受けた攻撃のanimtypeがback、up、diagup以外の時はこのステコンが作動します。

[State 5010, 2] ;Anim for HIT_BACK
type = ChangeAnim
trigger1 = Time = 0
trigger1 = GetHitVar(animtype) = [3,5]
value = 5030
;実質的に、受けた攻撃のanimtypeがbackの時、
;または5051番anim、5052番animが存在しない時にこのステコンが作動します。
;5030番animは、一般的な吹き飛びの初動モーションに当たります。

[State 5010, 3] ;Anim for HIT_UP/HIT_DIAGUP (only if it exists)
type = ChangeAnim
trigger1 = Time = 0
trigger1 = (GetHitVar(animtype) = [4,5]) && (SelfAnimExist(5047 + GetHitVar(animtype)))
value = 5047 + GetHitVar(animtype) ;5051 - 4 + type
;受けた攻撃のanimtypeがupもしくはdiagupの時に、このステコンの判定が行われます。
;upは垂直打ち上げ、diagupはきりもみ吹っ飛びに当たり、
;upの時は5051番、diagupの時は5052番animが呼び出されます。
;それぞれの専用animが存在しないときは、5030番animが呼び出されたままです。

[State 5010, 4] ;Freeze anim
type = ChangeAnim
trigger1 = Time > 0
value = anim
;hitshakeoverが成立するまでは、表示されるスプライトはanimの1枚目に固定されます。
;そのため、ヒットストップ中はずっと同じスプライトが表示されます。

[State 5010, 5] ;State type gets set to aerial if getting hit up
type = StateTypeSet
triggerall = Time = 0
trigger1 = GetHitVar(yvel) != 0 || GetHitVar(fall)
trigger2 = Pos Y != 0
statetype = a
;受けた攻撃でy方向の速度ベクトルが付加されたり、ダウン属性(fall)のついた攻撃を受けると
;statetypeが即座にAになります。
;これらの攻撃を受けていてもヒットストップ中は地上にいるように見えますが、
;内部処理上は空中判定です。なお、pos Yが0以外の状態で攻撃を受けたときも空中判定になります。

[State 5010, 6]
type = ChangeState
trigger1 = HitShakeOver
trigger1 = GetHitVar(yvel) = 0 && !GetHitVar(fall)
value = 5011 ;HITC_SLIDE
;ヒットストップ終了後、y方向の速度ベクトルがなく、ダウン属性もない場合は、
;地上しゃがみくらいノックバック用のステートに飛びます。

[State 5010, 7]
type = ChangeState
trigger1 = HitShakeOver
value = 5030
;すぐ上のステコンが作動しなかったときは、空中吹っ飛び用のステートに飛びます。

;---------------------------------------------------------------------------
; HITC_SLIDE
;地上しゃがみくらいノックバック用ステート
[Statedef 5011]
type = C
movetype= H
physics = C

[State 5011, 1]
type = HitVelSet
trigger1 = Time = 0
x = 1
;受けた攻撃のヒットベクトルに応じた初速度がかかります。

[State 5011, 2]
type = ChangeAnim
trigger1 = AnimTime = 0
value = 5025 + GetHitVar(animtype)
;しゃがみくらい用の5020番台のanimが呼び出されます。

[State 5011, 3] ;Stop sliding back
type = VelMul
trigger1 = Time >= GetHitVar(slidetime)
x = .6
;gethitvar(slidetime)が終わった後、
;constで規定されているphysicsに応じた摩擦に加えてさらに強い減速が始まります。

[State 5011, 4]
type = VelSet
trigger1 = HitOver
x = 0
;hitoverが成立すると、その時点で速度が止まります。

[State 5011, 5]
type = DefenceMulSet
trigger1 = HitOver
value = 1

[State 5011, 6]
type = ChangeState
trigger1 = HitOver
value = 11
ctrl = 1
;hitoverが成立した時点でしゃがみニュートラルステートに戻ります。

;---------------------------------------------------------------------------
; HITA_SHAKE
;statetype=Aで攻撃を受けた時はこのステートに飛びます。
;なおgroundtypeがtripの攻撃を受けたときはこのステートではなく5070番に飛びます。
[Statedef 5020]
type = A
movetype= H
physics = N
velset = 0,0

[State 5020, 1] ;Anim for HIT_LIGHT to HIT_HARD
type = ChangeAnim
trigger1 = Time = 0
trigger1 = GetHitVar(animtype) != [3,5]
value = ifelse((GetHitVar(airtype) = 1),5000,5010) + GetHitVar(animtype)
;受けた攻撃のanimtypeがback、up、diagup以外の時はこのステコンが作動します。
;groundtypeがlowの攻撃を受けたときは5010番台のanimが、
;それ以外の時は5000番台のanimが呼び出されます。
;そのため、空中くらいでも地上立ちくらい用のスプライトが表示されます。

[State 5020, 2] ;Anim for HIT_BACK
type = ChangeAnim
trigger1 = Time = 0
trigger1 = GetHitVar(animtype) = [3,5]
value = 5030
;受けた攻撃のanimtypeがback、up、diagup以外の時はこのステコンが作動します。

[State 5020, 3] ;Anim for HIT_UP/HIT_DIAGUP (only if it exists)
type = ChangeAnim
trigger1 = Time = 0
trigger1 = (GetHitVar(animtype) = [4,5]) && (SelfAnimExist(5047 + GetHitVar(animtype)))
value = 5047 + GetHitVar(animtype) ;5051 - 4 + type
;受けた攻撃のanimtypeがupもしくはdiagupの時に、このステコンの判定が行われます。
;upは垂直打ち上げ、diagupはきりもみ吹っ飛びに当たり、
;upの時は5051番、diagupの時は5052番animが呼び出されます。
;それぞれの専用animが存在しないときは、5030番animが呼び出されたままです。

[State 5020, 4] ;Freeze anim
type = ChangeAnim
trigger1 = Time > 0
value = anim
;hitshakeoverが成立するまでは、表示されるスプライトはanimの1枚目に固定されます。
;そのため、ヒットストップ中はずっと同じスプライトが表示されます。

[State 5020, 5]
type = ChangeState
trigger1 = HitShakeOver
value = 5030
;ヒットストップ終了後、空中吹っ飛び用のステートに飛びます。

;---------------------------------------------------------------------------
; HITA_UP (initial going up)
;空中吹っ飛び初期段階用ステート
[Statedef 5030]
type = A
movetype= H
physics = N
ctrl = 0

[State 5030, 1]
type = VelAdd;Gravity
trigger1 = 1
y = GetHitVar(yaccel)
;受けた攻撃のyaccelに応じた加速度がかかります。キャラクターのconstとは無関係です。

[State 5030, 2]
type = HitVelSet
trigger1 = Time = 0
x = 1
y = 1
;受けた攻撃のヒットベクトルに応じた初速度がかかります。

[State 5030, 3]
type = ChangeState
triggerall = !HitFall
trigger1 = HitOver
trigger2 = Vel Y > 0 ;Hit ground
trigger2 = Pos Y >= 10 ;.
value = 5040 ;HITA_RECOV
;ダウン属性のない攻撃を受けた後、hitoverが成立するか
;下向きに地面に近づくと5040番ステートに移行します。

[State 5030, 4]
type = ChangeState
triggerall = HitFall
trigger1 = HitOver
trigger2 = Vel Y > 0 ;Hit ground
trigger2 = Pos Y >= 10 ;.
value = 5050 ;HITA_FALL
;ダウン属性のついた攻撃を受けた後、hitoverが成立するか
;下向きに地面に近づくと5050番ステートに移行します。

[State 5030, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 5035 ;HITA_UP (transition)
;5040番、5050番ステートに飛ぶ条件を満たす前にanimtime=0が成立すると
;5035番ステートに移行します。

;---------------------------------------------------------------------------
; HITA_UP_T (transition)
;空中吹っ飛び初期段階その2用ステート
[Statedef 5035]
type = A
movetype= H
physics = N

[State 5035, 1]
type = ChangeAnim
trigger1 = Time = 0
trigger1 = SelfAnimExist(5035)
trigger1 = Anim != [5051,5059] ;Not if in hit up anim
trigger1 = Anim != 5090 ;Not if hit off ground anim
value = 5035
;受けた攻撃のanimtypeがup、diagupの時ではなく、かつダウン追い打ちではない場合、
;5035番animが存在する場合、5035番animが呼び出されます。

[State 5035, 2]
type = VelAdd
trigger1 = 1
y = GetHitVar(yaccel)
;受けた攻撃のyaccelに応じた加速度がかかります。キャラクターのconstとは無関係です。

[State 5035, 3]
type = ChangeState
triggerall = !HitFall
trigger1 = HitOver ;Hit is over
trigger2 = AnimTime = 0 ;Animation over
trigger3 = Vel Y > 0 ;Hit ground
trigger3 = Pos Y >= 10 ;.
trigger4 = Time = 0 ;No transition anim
trigger4 = Anim != 5035 ;.
value = 5040 ;HITA_RECOV
;ダウン属性のない攻撃を受けた後、animtime=0が成立するかhitoverが成立するか
;下向きに地面に近づくと5050番ステートに移行します。
;5035番animではない場合、即座に移行します。

[State 5035, 4]
type = ChangeState
triggerall = HitFall
trigger1 = HitOver ;Hit is over
trigger2 = AnimTime = 0 ;Anim is over
trigger3 = Vel Y > 0 ;Hit ground
trigger3 = Pos Y >= 10 ;.
trigger4 = Time = 0 ;No transition anim
trigger4 = Anim != 5035 ;.
value = 5050 ;HITA_FALL
;ダウン属性のついた攻撃を受けた後、anitime=0が成立するかhitoverが成立するか
;下向きに地面に近づくと5050番ステートに移行します。
;5035番animではない場合、即座に移行します。

;---------------------------------------------------------------------------
; HITA_RECOV (recovering in air, not falling)
;空中吹っ飛び後姿勢回復用ステート
[Statedef 5040]
type = A
movetype= H
physics = N

[State 5040, 1]
type = ChangeState
trigger1 = !Alive
value = 5050
;死亡判定が出ている場合、死亡用ステートに飛びます。

[State 5040, 2]
type = ChangeAnim
trigger1 = AnimTime = 0
trigger1 = Anim != 5040
trigger2 = Time = 0
trigger2 = Anim != 5035
value = 5040
;5035番anim以外では即座に5040番animに飛びます。
;5035番animでは、animtime=0が成立した時点で5040番animに飛びます。

[State 5040, 3]
type = CtrlSet
trigger1 = HitOver
value = 1
;hitoverが成立していると、ctrlが戻ります。

[State 5040, 4]
type = StateTypeSet
trigger1 = HitOver
movetype = I

[State 5040, 5]
type = VelAdd
trigger1 = 1
y = GetHitVar(yaccel)
;受けた攻撃のyaccelに応じた加速度がかかります。キャラクターのconstとは無関係です。

[State 5040, 6]
type = ChangeState
trigger1 = Vel Y > 0
trigger1 = Pos Y >= 0
value = 52 ;JUMPLAND
;下向きの速度がある状態でpos Y >= 0が成立すると汎用着地モーションへ飛びます。
;なおhitoverでctrlsetが実行されますが、デフォルトの52番ステートでは、
;着地時に再度ctrlが無効化されます。

;---------------------------------------------------------------------------
; HITA_FALL (knocked up, falling)
;空中吹っ飛び後ダウン用ステート
[Statedef 5050]
type = A
movetype= H
physics = N

[State 5050, 1] ;Change anim when done with transition
type = ChangeAnim
trigger1 = AnimTime = 0
trigger1 = Anim = 5035
trigger2 = Time = 0 ;If no transition anim
trigger2 = Anim != 5035
trigger2 = (Anim != [5051, 5059]) && (Anim != [5061, 5069])
trigger2 = Anim != 5090 ;Not if hit off ground anim
value = 5050
;5035番、5051番、5052番、5061番、5062番anim以外では即座に5035番animに飛びます。
;5035番animではanimtime=0が成立した時点で5050番animに飛びます。

[State 5050, 2] ;Coming down anim
type = ChangeAnim
trigger1 = anim = [5050,5059]
trigger1 = Vel Y >= ifelse(anim = 5050, 1, -2)
trigger1 = SelfAnimExist(anim+10)
value = anim+10
persistent = 0
;vel Y(下向きの速度)が一定以上になると、5050番、5051番、5052番animから
;それぞれ5060番、5061番、5062番animに飛びます。ただし、それらのanimがない時は飛びません。
;Vel Y >= ifelse(anim = 5050, 1, -2)が成立するのは、
;空中に吹っ飛ばされた後、落下が始まった頃と考えていいと思います。

[State 5050, 3] ;Gravity
type = VelAdd
trigger1 = 1
y = GetHitVar(yaccel)
;受けた攻撃のyaccelに応じた加速度がかかります。キャラクターのconstとは無関係です。

[State 5050, 4] ;Recover near ground
type = ChangeState
triggerall = Vel Y > 0
triggerall = Pos Y >= -20
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5200 ;HITFALL_RECOVER
;canrecoverが成立した後、下向きの速度がかかっている状態で
;地上付近で受身用コマンドを入れると、5200番ステートに飛びます。

[State 5050, 5]; Recover in mid air
type = ChangeState
triggerall = Vel Y > -1
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5210 ;HITFALL_AIRRECOVER
;canrecoverが成立した後、下向きの速度がかかっている状態で
;受身用コマンドを入れると、5210番ステートに飛びます。
;速度の制限は5200番ステートへの移行よりも緩くなっています。

[State 5050, 6]
type = ChangeState
trigger1 = Vel Y > 0
trigger1 = Pos Y >= ifelse((anim = [5051,5059]) || (anim = [5061,5069]), 0, 25)
value = 5100 ;HIT_BOUNCE
;animが5051番、5052番、5061番、5062番の時はpos Y >= 25で、
;それ以外の時はpos Y >= 0で5100番の汎用ダウンステートに飛びます。
;このためanimtypeがupもしくはdiagupの攻撃は、同じ攻撃を同じ高度で当てても、
;攻撃を受けた側のキャラクターの5051番、5052番、5061番、5062番animの
;有無によって着地するまでの時間が異なります。
;キャラクターのくらい判定以前に着地されて拾えない、ということが起こりえますので、
;空中での追撃が可能な攻撃のanimtypeにupやdiagupを使う時は注意が必要です。

;---------------------------------------------------------------------------
; HIT_TRIP (shaking)
;ground.typeがtripの攻撃を受けると、statetypeによらず最初にこのステートに飛びます。
[Statedef 5070]
type = A
movetype= H
physics = N
velset = 0,0

[State 5070, 1]
type = ChangeAnim
trigger1 = 1
value = 5070
;ground.typeがtripの攻撃を受けると、5070番animに飛びます。
;5000番、5010番、5020番ステートと同様、ヒットストップ中はずっと同じスプライトが表示されます。

[State 5070, 2]
type = ChangeState
trigger1 = HitShakeOver
value = 5071
;ヒットストップ終了後、trip吹っ飛び用のステートに飛びます。

;---------------------------------------------------------------------------
; HIT_TRIP2 (fall through air)
;trip吹っ飛び初期段階用ステート
[Statedef 5071]
type = A
movetype= H
physics = N

[State 5071, 1]
type = HitVelSet
trigger1 = Time = 0
x = 1
y = 1
;受けた攻撃のヒットベクトルに応じた初速度がかかります。

[State 5071, 2] ;Acceleration
type = VelAdd
trigger1 = 1
y = GetHitVar(yaccel)
;受けた攻撃のyaccelに応じた加速度がかかります。キャラクターのconstとは無関係です。

[State 5071, 3] ;Hit ground
trigger1 = Vel Y > 0
trigger1 = Pos Y >= 15
type = ChangeState
value = 5110
;pos Y >= 15で、trip吹っ飛び用のダウンステートに飛びます。
;pos Y = 0の段階ではまだ空中判定のままです。

  1. 2012/02/22(水) 23:20:53|
  2. キャラ製作の豆知識
  3. | トラックバック:0
  4. | コメント:0
<<gethitvarについて | ホーム | フルカラー対応アニメーションカットインの作り方>>

コメント

コメントの投稿


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

トラックバック

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

プロフィール

DHQ

Author:DHQ

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

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

FC2カウンター

検索フォーム

RSSリンクの表示

リンク

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

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

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