ステート奪取ページにも目を通すこと。

■ステート奪取/制御-自動タイプ(ワイヤー吹っ飛び・特殊やられ用)

ステート奪取後、相手に読み込ませるステートで制御させるタイプ。
性質上自分が自由に動くこともできるがやや複雑化しやすい。
Target系ステートコントローラー

最低限・用意するステート
  • 相手用の相手を制御する制御ステート
    • 記述を分かりやすく分けたければ制御ステートを複数作る。
基本の考え方
  • 相手のステートを奪い、相手用の制御ステートへ飛ばす。
以上。

少し具体的な基本
  • 相手に読み込ませる制御ステート
    • Commonのくらいステートの記述などを参考に構成する。
    • どんな制御をしていても、最終的にSelfStateすればよい。
  • なお複雑な処理をしなければ記述は非常に単純なもので済む。

手動タイプについて
手動タイプでも細かい制御を自動のように相手用ステートで制御させる手法もある。
また手動タイプの終了時点を自動タイプにし、特殊な挙動で放すこともできる。

■注意点・補足
  • 相手用の制御ステートは必ず自動で戻るように構成しなければならない。
    • 多少細かい制御をしていても、最終的にステートを返すなら良い。
  • リダイレクトやP2情報を使っての自分側の情報を条件とした挙動の変更は厳禁
    • 対象がズレてしまうと挙動が不安定になる。
    • 自分側の情報で挙動を変更する際はTarget系ステコンでの手動式で制御すること。
  • なおTarget制御はステートを奪う時点だけでもよいため、
    • SC-/TargetDropでTarget自体を放棄しても問題ない場合もある。


■Lv3-記述例

+ 相手を突き飛ばして壁へバウンドさせる技

相手を突き飛ばして壁へバウンドさせる技


;//「Another YUKA」から引用・改変(指定ステートへ飛ばせば使えるように)
;1.TargetStateで相手のステートを奪う
;2.相手は状態に従って動き、壁へ激突する。
;3.激突後少し待ってからバウンドし、そのまま落下まで待ってステートを返す。
;-----------------------■突き飛ばし
[StateDef 2500]
Type = S
MoveType = A
Physics = S
velset = 0,0
Anim = 2500
ctrl = 0
sprpriority = 5

;-------------■音声他
[State 2500, snd]■音声・必要なら
type = PlaySnd
trigger1 = 0; AnimElem=4
value = 1900, 0

[State 2500]
type = EnvShake
trigger1 = AnimElem=4
Time = 30
ampl = -5

;-------------■攻撃定義
[State 2500, hitdef];■更新するタイプ(二段式)
type = HitDef
trigger1 = !Time
Trigger2 = !MoveReversed && !MoveContact ;■命中まで更新するタイプ
Trigger3 = Numtarget(Anim) > 0 && NumTarget(Anim+1) = 0 ;■二段式
attr = S, HA
Damage = 70,30 ;●1
hitflag = MAF
guardflag = H ;●A
animtype = Hard
air.animtype = Hard
priority = 7,Hit ;●
PauseTime = 20,20 ;●
Guard.PauseTime = 12,12;●
;
sparkno = 3
gard.sparkno=40
sparkxy = -6 , -60 ;●
HitSound = 0,0
GuardSound=6,0
;
ground.type = High
air.type = High
ground.slidetime = 30 ;●
guard.slidetime = 30 ;●ガード
ground.hittime = 30 ;●
guard.hittime = 30 ;●
air.hittime = 30 ;●
guard.ctrltime = 30 ;●ガード
;
P2Facing = 1;
ground.velocity = -20, -5 ;●
air.velocity = -30, -5 ;●
guard.velocity = -20 ;●
airguard.velocity = -30, -5 ;●
ground.cornerpush.veloff = 0 ;無
;
fall = 1
fall.recover = 0
fall.damage = 10 ;●
fall.envshake.time = 10
fall.envshake.freq = 60
fall.envshake.ampl = -4
fall.envshake.phase = 0
;
getpower = 0,0 ;上がらない
givepower= 200,300 ;ゲージ謙譲
ID = Anim + (Numtarget(Anim)>0)
;HitOnce = 0
NoChainID = Anim
IgnorehitPause = 1
;
kill = 1
guard.kill = 1

;---------------■TargetState 相手のステートを奪う(二段式)
[State 2500];一段目
Type = targetState
Trigger1 = Numtarget(Anim)
Trigger1 = MoveContact = 1
Trigger1 =(Target(Anim),StateNo!=[150,159])||NumTarget(Anim) > 1 ;相手ガードでないor相手二人以上
trigger1 = Target(Anim),Alive ;生きている相手に限る
trigger1 = Target(Anim),Life > 0;生きている相手に限る
ID = Anim
value = 2504
Persistent = 0
Ignorehitpause = 1

[State 2500];二段目
Type = targetState
Trigger1 = Numtarget(Anim+1)
Trigger1 = MoveContact = 1
Trigger1 =(Target(Anim+1),StateNo!=[150,159])||NumTarget(Anim+1) > 1 ;相手ガードでないor相手二人以上
trigger1 = Target(Anim+1),Alive ;生きている相手に限る
trigger1 = Target(Anim),Life > 0;生きている相手に限る
ID = Anim + 1
value = 2504
Persistent = 0
Ignorehitpause = 1

;--------------------■他
[State 2500];ノックバック
Type = velset
Trigger1 = Numtarget(Anim)
Trigger1 = moveContact = 2
Trigger1 = target(Anim),BackEdgeDist < 5
X = -10

[State 840, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
Ctrl = 1

;■■■■■■■■■■メイン
;-----------------------■■■突き飛ばされ:相手の状態確認(ガードなら戻す)
;参考:DLS氏によるガード相手戻し記述。
[StateDef 2504]
Type = U
MoveType = U
Physics = U
sprpriority = -1
Ctrl = 0

[State 2504];■保険1・動かさない
Type = PosFreeze
Trigger1 = 1
IgnorehitPause = 1

[State 2504. NotHitBy];■保険2・この間は攻撃を受けない用
Type = NotHitBy
Trigger1 = 1
Value = SCA
IgnorehitPause = 1

[State 2504, SelfSTate guarded];■相手がガードしていたなら戻す
type = SelfState
Trigger1 = PrevSTateNo = [120,159] ;ガード最中だったか
value = 150 + 2*(StateType=C) + 4*(StateType=A)
IgnorehitPause = 1

[State 2504, changeanim];■アニメを変更する
type = ChangeAnim
Trigger1 = 1
value = 5002
IgnorehitPause = 1

[State 2504];■HitPauseが終了したら次のステートへ移動する。
Type = ChangeSTate
Trigger1 = HitShakeOver
value = 2505
IgnorehitPause = 1

;-----------------------■■■突き飛ばされ:吹っ飛び
;参考:KFMの壁激突
[StateDef 2505]
Type = A
MoveType = H
Physics = N
sprpriority = 0

[State 2505, Changeanim];■アニメを変更する
type = ChangeAnim
trigger1 = !Time
value = 5012

[State 2505, Hitvelset];■HitVelを設定する
type = HitVelSet
trigger1 = !Time
x = 1
y = 1

[State 2505, PlayerPush];■押し出し判定を消す。(吹っ飛び中引っかからないように)
type = PlayerPush
Trigger1 = 1
value = 0

[State 2505, Screenbound];■少ししたらカメラを止める。
type = screenbound
Trigger1 = Time > 5
value = 1
movecamera = 0, 1

[State 2505, edge bound];■壁近くに到達したら次へ
type = changestate
Trigger1 = backedgedist <= 10
Trigger2 = frontedgedist <= 10
value = 2506

[State 2505, error];■保険(中々壁に到達しない場合通常吹っ飛びへ)
Type = SelfState
Trigger1 = Time > 300
value = 5050
;壁激突へ移動しても良いが、動作的には吹っ飛びへ移るほうが自然。

;-----------------------■■■突き飛ばされ:壁激突
[StateDef 2506]
Type = A
MoveType = H
Physics = N
sprpriority = 0
velset = 0,0

[State 2506, Chagngeanim];■アニメを変更する(2F毎に切り替え)
type = ChangeAnim
trigger1 = 1
value = 5000 + 10 * ((time%4)>1)

[State 2506, turn];■前が壁である場合は反対向きにする。
Type = turn
Trigger1 = !Time && FrontEdgedist < 30

[State 2506, gamemakeanim];■汎用エフェクト表示;壁バウンドエフェクト(強)
type = GameMakeAnim
trigger1 = !time
value = 72
pos = -10, const(size.mid.pos.Y)
under = 0

[State 2506, snd];■衝突音を再生する
type = PlaySnd
trigger1 = !time
value = F7, 2

[State 2505, Screenbound];■カメラを動かさない。
type = screenbound
Trigger1 = 1
value = 1
movecamera = 0, 1

[State 2506];■7F経過(8F目)で次へ
type = changestate
Trigger1 = Time > 7
value = 2507

;-----------------------■■■突き飛ばされ・バウンド後
[StateDef 2507]
Type = A
MoveType = H
Physics = N
Ctrl = 0
velset = 2, -5 ;★バウンド速度・調整するならここ。

[State 2507, Changeanim];■アニメ変更
type = ChangeAnim
trigger1 = !Time
value = 5030

[State 2507];■アニメを変更する
type = ChangeAnim
Trigger1 = AnimTime = 0
Trigger1 = anim = 5030
value = 5050

[State 2505, Screenbound];■最初はカメラを動かさない。
type = screenbound
Trigger1 = Time > 3
value = 1
movecamera = 0, 1
[State 2508, Gravity];■落下加速度適応,5F目以降
type = VelAdd
Trigger1 = Time > 3
y = GetHitVar(yaccel);

[State 2505];■地面へ到達したら倒れバウンドへ移動
Type = SelfState
trigger1 = Vel Y > 0 && Pos Y >= 25 ;地面
value = 5100

[State 2505, error];■保険(中々地面へ到達しない場合通常吹っ飛びへ)
Type = SelfState
Trigger1 = Time > 300
value = 5050




最終更新:2013年06月17日 20:41