+
|
相手を突き飛ばして壁へバウンドさせる技 |
相手を突き飛ばして壁へバウンドさせる技
;//「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
|