MUGEN 2:31 2011/05/22 眠い 20:35 2011/05/22 ループステート型と追尾型を追加。 21:48 2011/05/22 SuperMoveTimeとかあったらTime換算じゃ時間が吹き飛んで動くってば。理想は追尾と同様発射時に持続フレーム数を換算する形かな。 22:12 2011/05/22 追尾型の記述に解説追加。 0:12 2011/05/23 追記云々。 0:34 2011/05/23 Explodでアニメを表示させることで、パレット効果を及ぼさないようにできました。 0:59 2011/05/23 略称について 1:05 2011/05/23 使い回しについて 2:52 2011/05/23 Projectileについての補足 15:47 2011/05/23 ヒットエフェクトとかに付いての追記 19:20 2011/05/23 Explodの座標はFloor処理しないとまずかったみたい 11:48 2011/05/27 AttackDistについて追記 3:21 2011/06/03 角度とAnimに関する計算を追記 7:59 2011/06/18 角度とスプライトについて追記 4:58 2011/07/29 今更グレイズ対応時のタッグについて 5:16 2011/10/18 追記:攻撃力の補正にVarを用いたい時とかにも使えます。  ヘルパーからProjectileを更新射出する形で色々するやつのテスト 追記:「Helper&2FProj型飛び道具」(explod無し)とか「Helper&2FProjEx型飛び道具」(explod有り)とかいう名前で    Ha2fP飛び道具とか、2fPとか2fPEとか、そういう略称で。  仕組み 1.ヘルパー出す 2.ヘルパーから2Fだけ残るProjectileをだす。(ProjRemoveTime=1ね) 3.Projectileは1Fだけ判定があって、残り1Fは判定も画像も無し。 >3−1.アニメーションをExplodで表示させれば、パレット効果を及ぼさないようにできる。 4.次のフレームでRoot,NumProjID(***)=1であるなら再度射出して残す。 4−2.座標は速度*時間や、座標そのものをVarで計算して算出する。 4−3.もし相手がダッシュしてるなら判定消してるアニメに変更。 5.自分管理のProjが全て無くなったらヘルパーも消滅させる。 ※大量に出す場合MUGENのProj,Explodの最大個数の設定を引き上げておくこと。 追記※Projectileが存在すると本体のAttackDistが機能しなくなる模様。   ※なので本体に補助のヘルパーをつけるか本体にProjectileを重ねる必要があるみたいです。   ※あとHelperの一応AttackDistも健在です。気になるならMovetype=Iなどに変更すればいいかな ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 追記> 表示アニメについて  例では4つのアニメを6Fずつ表示させるようになっています。  指定するアニメは連番にし、(Floor(Time%24/6))←こうした記述で切り替えさせてるわけです。 ( (0~23)/6の小数点以下切り捨てなので、0~5が0、6~11が1、12~17が2、18~23が3になります。 )  ちなみに対ダッシュ時は、+10000した番号のアニメを表示させる形。(4×2通りのAnimです)  複雑な切り替えをしたい場合はVarで制御する形か、   アニメの全てを1Fずつ連番にし切り替えるという方式でしょうか。  あと対ダッシュの相手を精査したい場合、自身の座標と相手の座標を計算し、   近いほうどちらかを選んで〜という処理を加える必要があるので結構面倒かと。できなくはない。 追記> 追従エフェクト(軌道エフェクト)の方法  原始的に「表示・位置更新させる前にエフェクトを表示させる」という形や   複数欲しいなら「表示・位置更新させる前の数値をVarで記録して表示させていく」という形など 追記> 本体くらいによる同時消失とエフェクトの表示  本体くらいを条件にChangeStateをし、そこでProjectileを射出していた位置にExplodなどを表示させ、   そのExplod表示が終わったらDestroySelfする、など。 追記> 1つのヘルパーを使い回すことは?  難しいができなくはないかと。  Varで「基準座標」を記憶しそこからの座標を入力してやればできるはず。 (飛び道具の個数とか細かい数値をVarに記憶させる必要があるけど)  ただ左右の向きを変えたり、複雑な動きをさせたい場合はかなり難しい。  左右の向きは「それぞれの飛び道具のパラメータを記憶するVar」を作って   飛び道具を発射させる前に向き確認の管理して〜とかいう感じでできるけど。 (記述量的にループは必須。) 追記> ヒットエフェクトとか  例ではsparknoなどを指定していないのでそれらを指定したり、   それらを-1にし、ProjContactTime(***)=1の時、Explodを射出するとか。  Explodを射出させる場合は、NumExplod=0をHelperの消失条件にする。 ※Proj,Explod,Helperなどの知識がちゃんとあって、  (特に複雑な処理をさせたい場合)Varを使うことに慣れてないと非常に辛いかと。 補足 Projectileについて  Projectileはアニメ関係などや攻撃判定関係の他、   「位置」と「初速」と「加速度」くらいしか指定できない上、   途中でそれらの数値を変更することができません。  なのでそれだけでは「途中で判定や速度を変更する」こともできません。  そこで「毎フレーム新しくProjectileを発射させる」ことで、   途中で判定などを変更できるようにしたのがこのHelper&2FProj型飛び道具です。  Projectileの設定と違い「位置」を毎フレーム指定してやる必要があるので面倒ですが、   反対に言えば毎フレーム「位置」を指定することができるため、   Projectileだけでは不可能な細かい速度の調整や「2回以上折り返す」こともできるわけです。  Helperから「位置」を計算してどこにあるかを判断させて処理することになるので面倒ですけど、   直角に曲がったり、反射のような動作をしたりすることもできます。 追記> 応用  この記述を応用することでExplodで複雑な動きをするエフェクトを表示させることもできます。  [HelperAndExplod.txt]それっぽい記述。 追記>スプライト回転の代替について。角度の計算。  Projectileはスプライト回転が使えないため、回転はAnimを変えることで処理することになります。  角度が「速度」に対するものである(進んでいる方へ向いている)場合は、 「 (Atan( #縦速度#*1.0 / Ifelse(#横速度#=0,0.00001,#横速度#*1.0) )*-180/pi) + (!(#横速度#)<0)*180) + 90 」(参考生足美鈴の射撃Helper記述)   で↑←↓→↑の0度〜360度の角度数値を算出できるので、   それをFloor()でVarへ代入しAnim = xx000+Var(**)%360という記述で(360枚の中から)特定のanimを表示させる感じ。  もし360枚も登録したくなければFloor(Var(**)/2)%180なら2度に1枚の画像で済みますし、   進む方向が前だけであれば180度(↓)~(→)~359度(↑)の登録でも十分かと。 ( 数値の処理的に、xx000〜xx179で登録するより、xx180~xx359で登録しておくほうが分かりやすいと思います。 ) [Begin Action xx 0 ]★*スプライトグループ*, 0 ,0,0,1,,★-1,0,0,0,1,,★★  と言う感じを並べて大量にコピペして並べ、エクセルなどで0の部分を連番に差し替え、   1桁の行の横に00を、2桁の行の横に0を追加し、改行の置換が可能なテキストソフトに移し「★」を改行置換、   そして「 (タブスペース)」を削除置換すればAnimの記述自体は比較的簡単に用意できます。 ( 判定の必要ないExplod用。2FProjEx型ならProjはアニメーション表示が必要ないので判定は統一Animで大丈夫。 )  Sff登録は簡略化の方法がないので面倒ですが。 追記>対称型のスプライトなら回転スプライトの登録は90枚分だけでいい。(名無しさんのコメントから)  Animは、水平反転、垂直反転、水平垂直反転をさせて登録することができるので、スプライト自体は90枚程度でも良さそうです。 *スプライトグループ*,*スプライト番号*,0,0,1,H, ;H=水平(Horizontal)反転 *スプライトグループ*,*スプライト番号*,0,0,1,V, ;V=垂直(Vertical)反転 *スプライトグループ*,*スプライト番号*,0,0,1,HV, ;水平垂直反転  もし↑,0から←,90の反時計周りの90度分なら、89~0までのV反転で←,91から↓,180、   1~90までのHV反転で↓,181から→,270、89~1までのH反転で→,271から↑,359という具合。  それでも90枚は登録する必要がありますけど。半分でも45。  ただし影を常に下側にしたい場合は、180度分を左右反転する必要があり、   模様があって反転しちゃまずい場合は、360度分全て登録する必要があります。 追記>タッグ対応について。  座標を指定して射出しているので、   相手との座標を計算して「近い相手」に対応させることは可能です。 ( その場合速度計算後、条件内部で座標計算させる必要がありますけど。 )  もっと言えば、「近い弾以外判定を消さない」ということも可能です。 ( もちろん、対応を相手の大きさよりも広めにしておかないと、    図体のデカイキャラはあたってしまう危険はあります。 ) ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;テストはKFMのスプライトを利用してやってました。KFMに追加する感じ。 ;-3ステートに追加 ABCでそれぞれの種類を射出。ABはほぼ一緒だけど。 [State -3];Projectile,通常射出型 Type = Helper Trigger1 = RoundState = 2 Trigger1 = command = "a" ID = 380000 ;ヘルパーのID Pos = 10,0 StateNo = 380000 ; OwnPal = 1 Size.XScale = 0.5 Size.YScale = 0.5 [State -3];Projectile+Explod,ループステート型 Type = Helper Trigger1 = RoundState = 2 Trigger1 = command = "b" ID = 380001 ;ヘルパーのID Pos = 10,0 StateNo = 380001 ; OwnPal = 1 Size.XScale = 0.5 Size.YScale = 0.5 [State -3];Projectile+Explod,ループステート型,追尾挙動+Explodヒットエフェクト Type = Helper Trigger1 = RoundState = 2 Trigger1 = command = "c" ID = 380002 ;ヘルパーのID Pos = 10,0 StateNo = 380002 ; OwnPal = 1 Size.XScale = 0.5 Size.YScale = 0.5 SuperMoveTime = 999999999 ;SuperPause中に動ける時間 PauseMoveTime = 999999999 ;Pause中に動ける時間 ;Airファイルに追加,これら以外にも192(割れるスプライト)を使ってる。 [Begin Action 200191] Clsn1:1 Clsn1[0] = -10,-10,10,10 191,3,0,0,1,, 191,-1,0,0,1,, [Begin Action 200192] Clsn1:1 Clsn1[0] = -10,-10,10,10 191,2,0,0,1,, 191,-1,0,0,1,, [Begin Action 200193] Clsn1:1 Clsn1[0] = -10,-10,10,10 191,1,0,0,1,, 191,-1,0,0,1,, [Begin Action 200194] Clsn1:1 Clsn1[0] = -10,-10,10,10 191,0,0,0,1,, 191,-1,0,0,1,, [Begin Action 210191] 191,3,0,0,1,, 191,-1,0,0,1,, [Begin Action 210192] 191,2,0,0,1,, 191,-1,0,0,1,, [Begin Action 210193] 191,1,0,0,1,, 191,-1,0,0,1,, [Begin Action 210194] 191,0,0,0,1,, 191,-1,0,0,1,, ;どこかのステートファイルに追加 [Statedef 380000];更新型Proj管理のテスト Type = A Movetype = A anim = 200191 [State a] Type = Changeanim Trigger1 = 1 value = 200191 elem = 2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1000+ID) = 1 projID = 1000+ID projanim = 200191+(Floor(Time%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.0*Time, 0 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 10 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1100+ID) = 1 projID = 1100+ID projanim = 200191+(Floor((Time+1)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.1*Time, -10 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 9 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1200+ID) = 1 projID = 1200+ID projanim = 200191+(Floor((Time+2)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.2*Time, -20 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 8 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1300+ID) = 1 projID = 1300+ID projanim = 200191+(Floor((Time+3)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.3*Time, -30 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 7 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1400+ID) = 1 projID = 1400+ID projanim = 200191+(Floor((Time+4)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.4*Time, -40 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 6 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1500+ID) = 1 projID = 1500+ID projanim = 200191+(Floor((Time+5)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.5*Time, -50 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 5 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1600+ID) = 1 projID = 1600+ID projanim = 200191+(Floor((Time+6)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.6*Time, -60 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 4 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1700+ID) = 1 projID = 1700+ID projanim = 200191+(Floor((Time+7)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.7*Time, -70 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 3 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1800+ID) = 1 projID = 1800+ID projanim = 200191+(Floor((Time+8)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.8*Time, -80 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 2 hitsound = 5,2 [State a] type = Projectile Trigger1 = !Time trigger2 = Root,NumProjID(1900+ID) = 1 projID = 1900+ID projanim = 200191+(Floor((Time+9)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = 1.9*Time, -90 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 1 hitsound = 5,2 [State 380008] Type = Destroyself Trigger1 = Time Trigger1 = Root,NumProjID(1000+ID) = 0 Trigger1 = Root,NumProjID(1100+ID) = 0 Trigger1 = Root,NumProjID(1200+ID) = 0 Trigger1 = Root,NumProjID(1300+ID) = 0 Trigger1 = Root,NumProjID(1400+ID) = 0 Trigger1 = Root,NumProjID(1500+ID) = 0 Trigger1 = Root,NumProjID(1600+ID) = 0 Trigger1 = Root,NumProjID(1700+ID) = 0 Trigger1 = Root,NumProjID(1800+ID) = 0 Trigger1 = Root,NumProjID(1900+ID) = 0 ;Trigger2 = Time > 3000 ;残り過ぎない [Statedef 380001];更新型Proj管理のテスト2/ループステート型 Type = A Movetype = A anim = 200191 [State a] Type = Changeanim Trigger1 = 1 value = 200191 elem = 2 [State a] type = Projectile Trigger1 = var(0) = 0 trigger2 = Root,NumProjID(2000+ID+ Var(1)*100) = 1 projID = 2000+ID+Var(1)*100 projanim = 200191+(Floor((var(0)+Var(1))%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = (19.0-var(1))/10*var(0), -10*Var(1) projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 projScale = 0,0 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 10-var(1) hitsound = 5,2 [State 60001] Type = Explod trigger1 = Root,NumProjID(2000+ID+ Var(1)*100) = [1,2] anim = 200191+(Floor((var(0)+Var(1))%24/6)) ID = 2000+ID+ Var(1)*100 Pos = Floor((19.0-var(1))/10*var(0)), -10*Var(1) Facing = 1 BindTime = -1 RemoveTime = 1 Scale = 1,1 Ownpal = 1 sprpriority = 10-var(1) [State 380008] Type = ChangeState Trigger1 = Time Trigger1 = 1 || var(1) := 0 Trigger2 = var(1) < 9 Trigger2 = 1 || var(1) := var(1)+1 value = 380001 [State 380008] Type = Destroyself Trigger1 = var(0) Trigger1 = Root,NumProjID(2000+ID) = 0 Trigger1 = Root,NumProjID(2100+ID) = 0 Trigger1 = Root,NumProjID(2200+ID) = 0 Trigger1 = Root,NumProjID(2300+ID) = 0 Trigger1 = Root,NumProjID(2400+ID) = 0 Trigger1 = Root,NumProjID(2500+ID) = 0 Trigger1 = Root,NumProjID(2600+ID) = 0 Trigger1 = Root,NumProjID(2700+ID) = 0 Trigger1 = Root,NumProjID(2800+ID) = 0 Trigger1 = Root,NumProjID(2900+ID) = 0 ;Trigger2 = var(0) > 3000 ;残り過ぎない [State 380008] Type = Null Trigger1 = var(0) := var(0) + 1 [Statedef 380002];更新型Proj管理のテスト3/追尾型 Type = A Movetype = A anim = 200191 [State a] Type = Changeanim Trigger1 = 1 value = 200191 elem = 2 [State a] Type = Posadd Trigger1 = PrevStateNo!=380002 Y = -60 [State a] Type = Null Trigger1 = PrevStateNo!=380002 Trigger1 = 1||(var(11):=0)||(var(12):=0);射出位置 Trigger1 = 1||(var(13):=0)||(var(14):=0) Trigger1 = 1||(var(15):=0)||(var(16):=0) Trigger1 = 1||(var(17):=0)||(var(18):=0) Trigger1 = 1||(var(19):=0)||(var(20):=0) Trigger1 = 1||(var(21):=0)||(var(22):=0) Trigger1 = 1||(var(23):=0)||(var(24):=0) Trigger1 = 1||(fvar(11):=-20) ||(fvar(12):=-60);初速設定 Trigger1 = 1||(fvar(13):=-40) ||(fvar(14):=-40) Trigger1 = 1||(fvar(15):=-60) ||(fvar(16):=-20) Trigger1 = 1||(fvar(17):=-80) ||(fvar(18):=0) Trigger1 = 1||(fvar(19):=-60) ||(fvar(20):=20) Trigger1 = 1||(fvar(21):=-40) ||(fvar(22):=40) Trigger1 = 1||(fvar(23):=-20) ||(fvar(24):=60) [State a] type = Projectile Trigger1 = var(0) = 0 + var(1)*20 ;それぞれ20Fズラして発射させる Trigger2 = var(1) > -1 ;ループ開始している。 trigger2 = Root,NumProjID(3000+ID+ Var(1)*100) = 1 ;Projがある Trigger2 =1|| fvar(1) := var(11+var(1)*2)*0.1 - P2Dist X ;飛び道具からのX距離を計算 Trigger2 =1|| fvar(2) := var(12+var(1)*2)*0.1 - (Floor(P2Dist Y)+Enemy,Const(Size.Mid.Pos.Y)) ;飛び道具からのY距離を計算 Trigger2 =1|| fvar(1) := fvar(1)*-1*(var(2+var(1))*0.001);相手まで遠かったり、発射から経過するほど早い加速度になる。 Trigger2 =1|| fvar(2) := fvar(2)*-1*(var(2+var(1))*0.001); Trigger2 =1|| var(11+var(1)*2) := var(11+var(1)*2)+Floor((fvar(11+var(1)*2):= fvar(11+var(1)*2)+fvar(1) )*0.5);速度に加速度を代入し、 Trigger2 =1|| var(12+var(1)*2) := var(12+var(1)*2)+Floor((fvar(12+var(1)*2):= fvar(12+var(1)*2)+fvar(2) )*0.5);位置に速度を代入する。 projID = 3000+ID+Var(1)*100 projanim = 200191+(Floor((var(0)+Var(1)*2)%24/6)) +(Enemy,StateNo = [100,119])*10000 offset = (var(11+var(1)*2))*0.1,(var(12+var(1)*2))*0.1 projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 1000 projstagebound =1000 projScale = 0,0 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 10 PauseTime = 10,10 ProjSprpriority = 10-var(1) sparkNo= -1 hitsound = 5,2 [State 60001] Type = Explod trigger1 = Root,NumProjID(3000+ID+ Var(1)*100) = [1,2] anim = 200191+(Floor((var(0)+Var(1)*2)%24/6)) ID = 3000+ID+ Var(1)*100 Pos = Floor((var(11+var(1)*2))*0.1),Floor((var(12+var(1)*2))*0.1) Facing = 1 BindTime = -1 RemoveTime = 1 Scale = 1,1 Ownpal = 1 sprpriority = 10-var(1) [State 60001] Type = Explod trigger1 = Root,ProjContactTime(3000+ID+ Var(1)*100) = 1 anim = 192 ID = 3000+ID+ Var(1)*100 Pos = Floor((var(11+var(1)*2))*0.1),Floor((var(12+var(1)*2))*0.1) Facing = -1 BindTime = -1 RemoveTime = -2 Scale = 1,1 Ownpal = 1 sprpriority = 10-var(1) [State 380008] Type = ChangeState Trigger1 = Time Trigger1 = 1 || var(1) := 0 Trigger2 = !Time && var(1) < 6 Trigger2 = 1 || var(1) := var(1)+1 value = 380002 [State 380008];発射し終わるまで待つ。 Type = Destroyself Trigger1 = var(0) > var(1)*20 Trigger1 = Root,NumProjID(3000+ID) = 0 Trigger1 = Root,NumProjID(3100+ID) = 0 Trigger1 = Root,NumProjID(3200+ID) = 0 Trigger1 = Root,NumProjID(3300+ID) = 0 Trigger1 = Root,NumProjID(3400+ID) = 0 Trigger1 = Root,NumProjID(3500+ID) = 0 Trigger1 = Root,NumProjID(3600+ID) = 0 Trigger1 = NumExplod = 0 ;Trigger2 = var(0) > 3000 ;残り過ぎない [State 380008];発射からの時間を計算 Type = Null Trigger1 =1|| var(0) := var(0) + 1 Trigger1 =1|| var(1) := -1 ;ループ開始前。 Trigger1 =1|| var(2) := var(2) + ( Root,NumProjID(3000+ID) = 2 ) Trigger1 =1|| var(3) := var(3) + ( Root,NumProjID(3100+ID) = 2 ) Trigger1 =1|| var(4) := var(4) + ( Root,NumProjID(3200+ID) = 2 ) Trigger1 =1|| var(5) := var(5) + ( Root,NumProjID(3300+ID) = 2 ) Trigger1 =1|| var(6) := var(6) + ( Root,NumProjID(3400+ID) = 2 ) Trigger1 =1|| var(7) := var(7) + ( Root,NumProjID(3500+ID) = 2 ) Trigger1 =1|| var(8) := var(8) + ( Root,NumProjID(3600+ID) = 2 ) ;本体Attackdist補助 [State 380008];現在の向きを記録 Type = Null Trigger1 = var(1) := Facing [State 380008];本体と向きを合わせる Type = Turn Trigger1 = Facing != Root,Facing [State a];本体攻撃時Projectileを射出する。 type = Projectile Trigger1 = Root,Movetype = A trigger1 = Root,NumProjID(100+ID) < 2 Guard.Dist = 160 ;←この数値はvarなどに変えて、調整してもいい projID = 100+ID ;※処理的に統一IDは不可重複発射上等、かな。 projanim = 192 offset = RootDist X, RootDist Y projremoveTime = 1 projpriority = 3 projsprpriority = 2 projedgebound = 20 projstagebound = 20 projscale = 0,0 Attr = A,AP HitFlag = MAF GuardFlag = MA Damage = 0 PauseTime = 0,0 ProjSprpriority = 10 [State 380008];向きを戻す Type = Turn Trigger1 = Facing != var(1) [State 380008];varを戻す。 Type = Null Trigger1 = var(1) := -1