;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■MUGEN [Statedef 370009];ステート番号を変えたい場合はStateDef 37を全て置換し、ChangeStateなども変更する。 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ; ;■ 高速画面端感知システムCNS byADI ( 参考:厨忍氏の画面端認識の解説 ) ;14:25 2011/05/19 大体出来た ;15:58 2011/05/19 おっけー ;16:16 2011/05/19 公開 ;16:39 2011/05/19 最新数値の算出方法を修正。多分あってる。多分。 ;00:43 2011/05/22 画面端の距離を感知させる記述を追加 ;01:20 2011/05/22 記述が安定するように ;22:52 2011/05/28 記述を改良。ただし動作未確認。 あと欠点の追加 ; 0:17 2011/05/29 動作確認完了。 ; 4:41 2013/01/26 画面端の幅を計算式で算出するように。 ; ;12:45 2020/05/05 【新mugen(1.0/1.1)について】 新mugenでは"Projedgebound"が許容値を超えると0になっているとのこと。 ;         →新mugenで使う場合はProjectileの"Projedgebound"の値を999999999から下げておかないと正常に作動しないらしいので ;          暫定的に99999とする修正を加えました。 ; ; ;使用方法 ;>使うキャラにStateNo[370000,370010]が使われてないことを確認する。 ; (使われてたらstatedefやChangeStateを使われてないStateNoに変更する) ;>使うキャラにProjID[370000,371999]が使われてないことを確認する。 ; (使われてたらファイル内検索「○」で出てくる設定項目を使われてないProjIDに変更。) ;>使うキャラのAnimから「一切当たり判定・衝突判定のない(可能なら表示も無い)」Animを探し、 ;  ファイル内検索「★」で出てくる設定項目をそのAnimに変更する。(イントロなどのアニメには大抵無い。) ;>このファイルの記述を全部、使うキャラのステートファイルのどっかにぶちこむ。 ;>-3ステートの上の方へ↓の記述をぶち込む。 [State -3,Field Edge];画面端感知用 -3ステートに置く。 Type = Helper Trigger1 = RoundState = 2 ;(安定させるため) Trigger1 = !NumHelper(370000) ;射出制限 ID = 370000 ;ヘルパーのID Pos = 0,0 StateNo = 370000 ; Size.XScale = 0 Size.YScale = 0 SuperMoveTime = 999999999 PauseMoveTime = 999999999 ;>動作を確認し、下記の記述で感知する。(※ヘルパーのvar数値は1F前のもの。) ;TriggerAll = NumHelper(370000) ;ヘルパーの感知 ;TriggerAll = Helper(370000),var(14) ;既に感知し終えているか。 ;Trigger1 = helper(370000),var(11+Facing) ;本体から前側の壁までの距離(1F前) ;Trigger1 = Helper(370000),var(11+Facing*-1) ;本体から後ろ側の壁までの距離(1F前) ;(相手の距離数値はおそらく(距離数値)-P2Dist X(自分の後ろの壁なら+P2Dist X)で分かります。) ; ※キャラの画面端に対する幅分の補正が必要。「××EdgeDist-××EdgeBodyDist」 ; ;>最新の数値が欲しい場合は↓のようにvarにでも代入して使うこと。 ;var(xx):=floor( Helper(370000),var(5+(facing=-1)) +(Helper(370000),Rootdist X*Helper(370000),Facing)*(facing*-1) )-(Helper(370000),var(14+(facing=-1)))-(FrontEdgeDist-FrontEdgeBodyDist);前側の壁 ;var(xx):=floor( Helper(370000),var(5+(facing=1))+(Helper(370000),Rootdist X*Helper(370000),Facing)*(facing) )-(Helper(370000),var(14+(facing=1)))-(BackEdgeDist-BackEdgeBodyDist);後ろ側の壁 ;(これでいい、はず。) ; ;厨忍氏の解説からの改善点 ;>基本ヘルパー1つで両端を認識できるように。 ;>画面端までの長さ/10のTimeを要していたのを短縮。 ; >1000未満ならほとんど30Fも掛からない。たまに掛かるかもしれない。 ; >ただし大雑把な距離の限度数値の設定値以上だと画面端が無いに等しい扱いをする。 ;>画面端の長さ自体も測れるように。 ; >処理に不安があったが、計算式にし改善。 ; >ただし本体でEdgeが変動した場合は再度本体側で計算する必要がある。 ; ;欠点 ;>Projectileの上限数にひっかかると上手く動作してくれないかも。 ; >一度に大量に射出することもあるためタッグも考慮し、64以上は必須かと。 ;>端までの距離を感知する方法が若干異なるので厨忍氏の記述とは互換性は無い。 ;>ステージのCommon限界(PlayerInfoのLeftBound,RightBoundの数値)や、 ; >[Camera]のBoundLeft,BoundRightが外側でなく内側への指定の場合などは感知できない。ステージのバグです。 ; ※>Common限界の方は不可能ではない。画面に捕われないヘルパーを遠くまで飛ばして止まった所がCommon限界の場所。 ; ※>[Camera]のBoundLeft,BoundRightを内側に指定すると、Projectileなどの動作に以上が出ます。 ;22Ver>左右の画面端の長さが一致していない場合無いものとして処理していた ; 28Ver>しばらく(6〜60F)検査して一番少ない数値を使用する処理に調整。 ; 2013ver>計算式にすることで解決。 ;>本体のEdge処理については別途計算しないとけない。 ; ;処理内容 ※Projectileは全て外側への速度を1付けて射出しています。なので最終的に+1した数値を距離数値にしているわけです。 ; 370000,クイックサーチ ;  >画面端の長さを算出。 ;  >自身を画面中央に動かし右向きにしてProjectileを8つ発射する。 ;   >それぞれ1000,750,500,250の距離で左右に発射している。 ;  >1F後、1000のProjectileがある場合大雑把な距離感知へ移行 ;  >1F後、750,500,250のProjectileがあるか全てない場合、一番遠い距離に+300したものを細密調査開始距離として代入する。 ;  >両方の調査数値が代入されたら細密調査へ ; 370001,大雑把な距離感知 ;  >6400にProjectileを射出し、1F後残っていたら画面端無しと同等に扱う。 ;  >残っていなかったら-500をして再度射出→確認を繰り返す。2000以下になったら-100に変更。 ;  >残った所でその数値に+200(1500以上ならさらに+800)した数値を細密調査開始距離として代入する。 ;  >両方の調査数値が代入されたら細密調査へ ; 370002,細密調査 ;  >代入された細密調査開始距離から-100をしてProjectileを射出する。 ;  >Projectileがない場合再び-100して射出。ある場合基準数値に+100をして再び射出。 ;  >+100した後は-10でProjectileを射出。次Fに無ければまた-10、あれば+10をして再び射出。 ;  >+10した後は-1でProjectileを射出。次F無ければまた-1、あればその数値から+1して「距離数値」を記録。 ;  >両方の距離数値が代入されたら待機ステートへ ; 370008,画面端の長さ感知※2013verから不使用。削除可 ;  >カメラの影響をうけるようにしつつ自身はカメラを動かさないようにする。(ScreenBound設定) ;  >速度は外側になるよう設定し、画面端に居続けるように。 ;  >右側の「abs(Floor(ScreenPos X)) - abs(Floor(Pos X))*2 -1」と左側の「abs(Floor(ScreenPos X))」を親var14,15に記録(画面端の長さ) ;  >6Fほど検査し左右の記録が一致したら終了感知で消滅。 ;  >一致していない場合、記録した数値と記録する数値の少ない数値を記録していき、1秒経って一致していなければそのまま消滅。 ; 370010,待機ステート ;  >本体と反対の向きになるよう向きを調整 ;  >var(10)とvar(12)に本体から壁までの距離数値を代入する。 ;  >var(11),var(13)にも念のため数値を代入しておく。あまり意味は無い。 ;  >var(14)とvar(15)が一致していれば、var(16)にvar(14)を代入、一致していなければ0を代入。 ;大きな区分で分けて察知を始めるため、調査開始位置を可能な限り画面端へ近づけることができている。 ;画面端近くから調査を始めるので最終的な調査までの速度とても早く済む。 ;ただし、大雑把な距離数値を感知する必要性のある大きさでは若干結果まで遅れる。(それでも一秒は掛からない、はず) ;厨忍氏の解説していた方法と大きく異なる点は「画面内から外へ出るまで」ではなく「画面外へ射出する」という点。 ;画面外へ射出した場合、VelocityのX軸が0以外であれば、そのフレーム中の処理で消失させることができるので、 ; その性質を利用してあえて画面外へ射出していき、徐々に中央へ近づかせ、消失しなければ寄り細かく、という方法です。 ;もっと素早い方法としては記述が若干面倒でProjectileを多く使うものの ; 100単位で10個射出しどこで消失したかを確認、次に10単位で9個射出し、次に1単位で9個射出し、という方法なら ; 一度に約20個(タッグで全員なら約80個)もProjectileを使うが、最短4F(1000以上なら+(距離/1000)F)で感知させることができる。 ;projectileの射出上限はいくらでも上げられるので注意書きでもすれば問題ない方法だと思いますが。 [State 370009] Type = Null Trigger1 = 1 ;■■■■■■■■■■ [Statedef 370000];クイックサーチ Type = A [State 370010, AssertSpecial] Type = AssertSpecial Trigger1 = 1 flag = Invisible flag2 = Noshadow ignorehitpause=1 [State 370010, NotHitBy] Type = NotHitBy Value = SCA Trigger1 = 1 IgnoreHitPause = 1 [State 370000];右向きに Type = turn Trigger1 = Facing = -1 [State 370000] Type = PosSet Trigger1 = var(0) = 0 Trigger1 = var(0):= 1 Trigger1 =(var(1):= 0)||(var(3):= 1)||(var(5):= 0) Trigger1 =(var(2):= 0)||(var(4):= 1)||(var(6):= 0) Trigger1 = var(7):= 370000;○前側のProjID,重複してるなら変更 Trigger1 = var(8):= 371000;○後ろ側(370xxx,371xxxの全てで重複しないように。) Trigger1 = var(21):= 6400;大雑把な距離感知・察知開始数値 Trigger1 = var(22):= 6400;大雑把な距離・限度数値(この数値以上の場合は1000000000=画面端が無いに等しいと扱う) Trigger1 = var(25):= 1000;クイックサーチ・目安1(片方でもこの数値以上なら大雑把な距離感知からに) Trigger1 = var(26):= 750;クイックサーチ・目安2 Trigger1 = var(27):= 500;クイックサーチ・目安3 Trigger1 = var(28):= 250;クイックサーチ・目安4 Trigger1 = var(29):= 300;クイックサーチ・補正値(↑25~28の差はこの数値以上にしない。28はこの数値以上にしない。) Trigger1 = var(50):= 191 ;★使用するアニメ番号※当たり判定・攻撃判定のないものにすること X = 0 Y = -25 [State -3,Field Edge];画面端距離算出、2013verで追加 Type = Null Trigger1 = var(14) := Floor(ScreenPos X - Pos X) - FrontEdgeDist + Floor(Pos X*facing) ;前側の画面端幅 Trigger1 = var(15) := Floor(ScreenPos X - Pos X) - BackEdgedist - Floor(Pos X*facing) ;後ろ側の画面端幅 [State -3,Field Edge];画面端距離感知※封印・削除可 Type = Helper Trigger1 = !NumHelper(370008) ;射出制限 Trigger1 = !Var(14) Trigger1 = 0 ;不要と判明 ID = 370008 ;ヘルパーのID Pos = 1000,0 StateNo = 370008 ; Size.XScale = 0 Size.YScale = 0 SuperMoveTime = 999999999 PauseMoveTime = 999999999 [State -3,Field Edge];画面端距離感知※封印・削除可 Type = Helper Trigger1 = !NumHelper(370009) ;射出制限 Trigger1 = !Var(14) Trigger1 = 0 ;不要と判明 ID = 370009 ;ヘルパーのID Pos = -1000,0 StateNo = 370008 ; Size.XScale = 0 Size.YScale = 0 SuperMoveTime = 999999999 PauseMoveTime = 999999999 [State 370000] Type = ChangeAnim value = var(50) Trigger1 = 1 [State 370000] Type = Projectile Trigger1 = !Time && Var(1) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(7)+200 ProjAnim = var(50) Offset = var(25),0 Velocity = 1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = Projectile Trigger1 = !Time && Var(2) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(8)+200 ProjAnim = var(50) Offset = var(25)*-1,0 Velocity = -1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = Projectile Trigger1 = !Time && Var(1) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(7)+201 ProjAnim = var(50) Offset = var(26),0 Velocity = 1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = Projectile Trigger1 = !Time && Var(2) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(8)+201 ProjAnim = var(50) Offset = var(26)*-1,0 Velocity = -1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = Projectile Trigger1 = !Time && Var(1) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(7)+202 ProjAnim = var(50) Offset = var(27),0 Velocity = 1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = Projectile Trigger1 = !Time && Var(2) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(8)+202 ProjAnim = var(50) Offset = var(27)*-1,0 Velocity = -1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = Projectile Trigger1 = !Time && Var(1) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(7)+203 ProjAnim = var(50) Offset = var(28),0 Velocity = 1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = Projectile Trigger1 = !Time && Var(2) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(8)+203 ProjAnim = var(50) Offset = var(28)*-1,0 Velocity = -1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370000] Type = changeState TriggerAll = Time Trigger1 = !var(1) && Root,NumProjID(var(7)+200) Trigger2 = !var(2) && Root,NumProjID(var(7)+200) value = 370001 [State 370000];目安を記録 Type = Null TriggerAll = Time Trigger1 = !var(1) && Root,NumProjID(var(7)+201) Trigger1 =0&& var(1) := var(26) + var(29) Trigger2 = !var(2) && Root,NumProjID(var(8)+201) Trigger2 =0&& var(2) := var(26) + var(29) Trigger3 = !var(1) && Root,NumProjID(var(7)+202) Trigger3 =0&& var(1) := var(27) + var(29) Trigger4 = !var(2) && Root,NumProjID(var(8)+202) Trigger4 =0&& var(2) := var(27) + var(29) Trigger5 = !var(1) && Root,NumProjID(var(7)+203) Trigger5 =0&& var(1) := var(28) + var(29) Trigger6 = !var(2) && Root,NumProjID(var(8)+203) Trigger6 =0&& var(2) := var(28) + var(29) Trigger7 = !var(1) &&!Root,NumProjID(var(7)+203) Trigger7 =0&& var(1) := var(29) Trigger8 = !var(2) &&!Root,NumProjID(var(8)+203) Trigger8 =0&& var(2) := var(29) [State 370000] Type = changeState TriggerAll = Time Trigger1 = var(1) && var(2) value = 370002 [State 370000] Type = changeState TriggerAll = Time Trigger1 = !var(1) || !var(2) value = 370001 ;■■■■■■■■■■ ;■■■■■■■■■■ [Statedef 370001];大雑把な距離感知 Type = A Anim = var(50);20 [State 370010, AssertSpecial] Type = AssertSpecial Trigger1 = 1 flag = Invisible flag2 = Noshadow ignorehitpause=1 [State 370010, NotHitBy] Type = NotHitBy Value = SCA Trigger1 = 1 IgnoreHitPause = 1 [State 370001] Type = Projectile Trigger1 = !Time && Var(1) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(7)+100 ProjAnim = var(50) Offset = var(21),0 Velocity = 1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370001] Type = Projectile Trigger1 = !Time && Var(2) = 0 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(8)+100 ProjAnim = var(50) Offset = var(21)*-1,0 Velocity = -1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370001];限度数値 Type = Null TriggerAll = Time Trigger1 = !var(1) && Root,NumProjID(var(7)+100) Trigger1 = var(21) >= var(22) Trigger1 =0&& var(5) := 1000000000 Trigger2 = !var(2) && Root,NumProjID(var(8)+100) Trigger2 = var(21) >= var(22) Trigger2 =0&& var(6) := 1000000000 [State 370001];目安を察知 Type = Null TriggerAll = Time Trigger1 = !var(1) && Root,NumProjID(var(7)+100) Trigger1 =0&& var(1) := var(21) + 200 +(var(21)>1500)*800 Trigger2 = !var(2) && Root,NumProjID(var(8)+100) Trigger2 =0&& var(2) := var(21) + 200 +(var(21)>1500)*800 [State 370001] Type = Null TriggerAll = Time Trigger1 = var(21)>2000 Trigger1 =1|| var(21):=var(21)-500 Trigger2 = var(21)<=2000 Trigger2 = var(21):=var(21)-100 [State 370001] Type = changeState TriggerAll = Time Trigger1 = !var(1) || !var(2) value = 370001 [State 370001] Type = changeState Trigger1 = var(1) && var(2) value = 370002 ;■■■■■■■■■■ ;■■■■■■■■■■ [Statedef 370002];細密調査 Type = A Anim = var(50);0 [State 370010, AssertSpecial] Type = AssertSpecial Trigger1 = 1 flag = Invisible flag2 = Noshadow ignorehitpause=1 [State 370010, NotHitBy] Type = NotHitBy Value = SCA Trigger1 = 1 IgnoreHitPause = 1 [State 370002] Type = Projectile TriggerAll = var(5) = 0 && !Time Trigger1 = Root,NumProjID(var(7)+var(3)) = 0 && var(3) = [1,3] Trigger1 =1|| var(1) := var(1) - IfElse(var(3)=1,100,IfElse(var(3)=2,10,1)) Trigger2 = Root,NumProjID(var(7)+var(3)) = 1 && var(3) = [1,2] Trigger2 =1|| var(1) := var(1) + IfElse(var(3)=1,100,IfElse(var(3)=2,10,1)) Trigger2 =1|| var(3) := var(3) + 1 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(7)+var(3) ProjAnim = var(50) Offset = var(1),0 Velocity = 1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370002] Type = Projectile TriggerAll = var(6) = 0 && !Time Trigger1 = Root,NumProjID(var(8)+var(4)) = 0 && var(4) = [1,3] Trigger1 =1|| var(2) := var(2) - IfElse(var(4)=1,100,IfElse(var(4)=2,10,1)) Trigger2 = Root,NumProjID(var(8)+var(4)) = 1 && var(4) = [1,2] Trigger2 =1|| var(2) := var(2) + IfElse(var(4)=1,100,IfElse(var(4)=2,10,1)) Trigger2 =1|| var(4) := var(4) + 1 Attr = A, AP HitFlag = N GuardFlag = N ProjID = var(8)+var(4) ProjAnim = var(50) Offset = var(2)*-1,0 Velocity = -1,-1 ProjStageBound = 0 ProjEdgeBound = 99999 ProjRemoveTime = 2 ProjScale = 0,0 PosType = P1 SuperMoveTime = 999999999 PauseMoveTime = 999999999 Guard.Dist = 0 [State 370002] Type = varset var(5) = var(1)+1 Triggerall = Time && !Var(5) Trigger1 = Root,NumProjID(var(7)+var(3)) = 1 && var(3) = 3 [State 370002] Type = varset var(6) = var(2)+1 Triggerall = Time && !Var(6) Trigger1 = Root,NumProjID(var(8)+var(4)) = 1 && var(4) = 3 [State 370002] Type = changeState Trigger1 = var(5) && var(6) value = 370010 [State 370002] Type = changeState Trigger1 = Time value = 370002 ;■■■■■■■■■■ ;■■■■■■■■■■※最新版では使用せず。放置。 [Statedef 370008];画面端感知 Type = A Anim = Parent,Var(50) [State 370010, AssertSpecial] Type = AssertSpecial Trigger1 = 1 flag = Invisible flag2 = Noshadow ignorehitpause=1 [State 370010, NotHitBy] Type = NotHitBy Value = SCA Trigger1 = 1 IgnoreHitPause = 1 [State 380008] Type = ScreenBound Value = 1 MoveCamera = 0,0 Trigger1 = 1 [State 380008] Type = Veladd X = IsHelper(370008)*1000-IsHelper(370009)*1000 Trigger1 = 1 [State 370000] Type = Parentvarset var(14) = abs(Floor(ScreenPos X)) - abs(Floor(Pos X))*2 -1 Trigger1= Time Trigger1= IsHelper(370008) Trigger1= var(14) = 0 || var(14) > abs(Floor(ScreenPos X)) - abs(Floor(Pos X))*2 -1 [State 370000] Type = Parentvarset var(15) = abs(Floor(ScreenPos X)) -1 Trigger1= Time Trigger1= IsHelper(370009) Trigger1= var(15) = 0 || var(15) > abs(Floor(ScreenPos X)) -1 [State 380008] Type = Destroyself Trigger1 = Time > 5 Trigger1 = Parent,var(14)=Parent,Var(15) Trigger2 = Time > 60 ;■■■■■■■■■■ ;■■■■■■■■■■ [Statedef 370010];待機ステート Type = A Anim = var(50);11 [State 370010, AssertSpecial] Type = AssertSpecial Trigger1 = 1 flag = Invisible flag2 = Noshadow ignorehitpause=1 [State 370010, NotHitBy] Type = NotHitBy Value = SCA Trigger1 = 1 IgnoreHitPause = 1 [State 370000] Type = turn Trigger1 = Facing != Root,Facing [State 370000] Type = varset;Parentvarset var(10) = var(6) + Floor(RootDist X) *(facing) -var(15) Trigger1= 1 [State 370000] Type = varset;Parentvarset var(11) = var(6) -var(15) Trigger1= 1 [State 370000] Type = varset;Parentvarset var(12) = var(5) + Floor(RootDist X) *(facing*-1) -var(14) Trigger1= 1 [State 370000] Type = varset;Parentvarset var(13) = var(5) -var(14) Trigger1= 1 [State 370000];デバッグ Type = DisplayToClipBoard Trigger1 = 1 text = "|<== %d -root- %d ==>|\n|<== %d -Center- %d ==>| flag=%d \n" Params = var(10), var(12), Var(11), Var(13), var(14)*100+var(15) IgnoreHitPause = 1 ;待機ステートではVar(50)とVar(5~6)をVar(10~15)まで使用している。 ;待機ステートであればそれら以外のVarを自由に使っても良い。 ;■■■■■■■■■■ ;■■■■■■■■■■