「SC-/Projectile」の編集履歴(バックアップ)一覧はこちら

SC-/Projectile」(2021/03/31 (水) 04:01:09) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

戻る→[[ステートコントローラーの一覧]] ---- :※解説修正情報※| //●&font(12,b){日付:修正部分の概要} ●&font(12,b){2017-03-25:P2getP1Stateの処理について} ●&font(12,b){2016-05-13:OffSetはFloat型の数値をそのまま入れるとエラーで落ちる。ただし例外有り?} ●&font(12,b){2015-11-07:Proj***Bound系について追記} ●&font(12,b){2014-10-18:ProjPriorityとProjHitsの関係性・相殺打ち消し計算が判明} ●&font(12,b){2014-10-18:ProjPriorityについて検証。またProj相殺処理はProjくらい判定同士で発生する模様} ●&font(12,b){2014-10-13:Scale処理について間違っていた。} ●&font(12,b){2014-10-11:PauseTime設定やProjHits・ProjMissTimeに関して。・HitDefとの性質の違いについて} ●&font(12,b){2013-06-20:P2getP1Stateの処理について} ---- //ほかページヘのリンクはLv0のみで。(Lv1~でリンクしようとすると煩雑になりそうなので) &b(){※検証の足りない部分が多々ありますので、使用する際は検証しつつ使いましょう} *■Projectile【飛び道具を発射する】 :▼概要| 飛び道具「Projectile」の射出を行う。「Proj」と略される。 [[SC-/HitDef]]とほぼ同様の攻撃定義を持ったアニメを発射する。 射出後はパラメーターに従って残存・消失する。 アニメを用意すれば基本HitDefの定義へProj用のパラメータを入れるだけで使える。 なお本体の[[T-/MoveType]]は影響しないが、、基本的に''Movetype=A''でなければならない。 :上限数| またProjは''キャラ毎の''総数に上限があり、それを超えると射出できなくなる。 限数は[[mugen.cfg>File-/MUGEN設定ファイル ]]で設定。 [[SC-/Explod]]や[[SC-/Helper]]と異なりプレイヤー毎の総数? //初期値不明? :Proj関連| 個数:[[T-/NumProj]][[T-/NumProjID()]] 命中:[[T-/ProjContact]][[T-/ProjHit]][[T-/ProjGuarded]] 命中後時間:[[T-/ProjContactTime()]][[T-/ProjHitTime()]][[T-/ProjGuardedTime()]] 相殺後時間:[[T-/ProjCancelTime()]] :▼必須記述| -パラメーター指定がなくてもエラー無し。 -ただし攻撃用に使用する場合は[[SC-/HitDef]]と同じ指定は必要。 :▼オプション| -攻撃定義:[[SC-/HitDef]]とほぼ同じ方式で記述する。 --''PauseTimeの自分側''は本体に影響を与えず、Projのみが停止するため''0''が望ましい。 ---停止中は「複数ヒットの処理」が停止される。アニメ処理や消滅処理は停止中でも行われる。 --[[Juggle]]値はAir.Juggleで指定する。本体のJuggle値設定は無関係? --なお[[SC-/HitDef]]同様、実行時点のパラメータのみが有効。 ---[[ダメージ]]のページも参照 --AffectTeamで味方に当たる設定でも、''管理キャラ自体には命中しない'' --Hitonce(単一ヒット設定)は機能しない? &b(){ProjID = (Int型) };Proj系トリガー情報に用いるID。HitIDとは異なる。 :射出位置| &b(){PosType = (文字列) };表示の基準点。Offset=0,0とする場所。 -''P1'':実行するキャラの座標。 省略時P1 -''P2'':P2相手の座標。(P2相手については[[リダイレクト]]参照) -''F'':Front:キャラの前の画面端,地面。 -''B'':Back:キャラの後ろの画面端,地面。 -''L'':Left:画面自体の左端,地面。 -''R'':Right:画面自体の右端,地面。 --Front,Back,Left,Rightは頭文字だけで識別?スペルミスしていても動く。 --F,B,L,Rは全て''地上の高さを基準として設定している'' --向きは常に''キャラの向き''が基準となる。 &b(){Offset = (X座標Float型), (Y座標Float型) };発射座標 省略時0,0 -座標指定パラメータは''PosではなくOffset''。間違えないように。 -※''Float型の数値をそのまま入れるとエラー落ちする模様''。数値入力ではInt型望ましいかも。 --※記述を工夫すると例外的にFloat型を使うことができるみたい? ---「Int型+Float型」など数式にして、数式の最初の数値をInt型にする。(例:10+0.13) ---Flaot型のトリガー情報を記述する。([FVar()]を含む) ----以上の書式にするとFloat型を使ってもエラーで落ちることも、エラーが流れる事も無い模様? :移動速度| &b(){Velocity = (X速度Float型), (Y速度Float型) };速度 省略時0,0(静止) &b(){Accel = (X加速度Float型), (Y加速度Float型) };加速度 省略時0,0(無変化) &b(){VelMul = (X速倍率Float型), (Y速倍率Float型) };速度倍率 省略時1,1(無変化) -速度の基準の向きはPosTypeの基準と同じ(向き基準) -速度がアニメの向きを制御し常に左右の''進行方向へ向く''。 --ただしAccelの値は射出時点の基準の向きで処理をする。 -Proj自体の移動速度。出現時点から移動する? --Accelは出現時点ではかからない? --攻撃判定は動いた跡に行われる。[[フレーム処理]]参照 &b(){RemVlocity = (X速度Float型), (Y速度Float型) };Remove時点の速度 -消失時点で''上書き設定される速度'' 省略時0,0(停止) :アニメ系| &b(){ProjAnim = (Int型) };基本アニメ 省略時0 -くらい判定がある場合、ProjやHitFlag=Pによる相殺が可能になる。 --Proj同士の相殺は''くらい判定同士の重なり''で発生する。攻撃判定は不要。 ---※Projのくらい判定は[[Ctrl+C>デバッグ]]では表示されないため確認には注意。 ---攻撃処理とは別でAttrにP属性を指定しなくてもProj同士である場合は相殺・打ち消しは発生する。 --HitDefによる打ち消しはHitDefの攻撃判定→Projのくらい判定によって成立する。 ---ただし同時にProj攻撃判定がhtidef側へ命中する場合、''Proj命中が優先され打ち消しが起きない'' &b(){ProjHitAnim = (Int型) };ヒット''消滅''時アニメ 省略時-1(無) &b(){ProjRemAnim = (Int型) };条件消失時アニメ 省略時HitAnimと同一 &b(){ProjCancelAnim = (Int型) };相殺時アニメ 省略時RemAnimと同一 -複数ヒットする設定の場合、消滅するヒットの時のみProjHitAnimに変化する -「RemAnim」の条件はProjRemoveTimeやBound系の適応消失時。 --ちなみにRemAnimに攻撃判定があると基本同様ヒットするらしい? &b(){ProjScale = (X縮尺Flaot型), (Y縮尺Float型) };表示スプライトの縮尺指定。省略時1,1 -''この設定では判定枠の大きさは変化しない'' -[[File-/CNSファイル]]のサイズ設定、Proj.DoScale設定を基準とした倍率を指定する。 --親サイズが2,2でもProj.DoScaleが0の場合は1,1を基準とし、ProjScale=2,2なら通常から2倍の表示。 --親サイズが2,2でProj.DoScaleが1だと2,2を基準とし、ProjScale=2,2なら通常から2☓2の4倍の表示に。 --[[SC-/Helper]]が親の場合、Helperの設定を基準とする。(省略時、その親と同じ) &b(){ProjSprPriority = (Int型) };アニメ表示優先度 省略時:3 :特殊効果| &b(){ProjShadow = (赤Int型), (緑Int型), (青Int型) };影設定 省略時0,0,0(影無し) -''-1''設定でステージ依存、255,255,255で真っ黒に。 //&b(){Proj = (Int型) }; :消失関係| &b(){ProjRemove = (bool型) };ヒット時の消失フラグ 省略時:1(ヒットで消失) -1の場合はProjHitsの残り回数が0になると消失する。 &b(){ProjRemoveTime = (Int型) };消失までの時間 -省略時:-1(時間では消失しない。) -カウントと消失は[[フレーム処理]]の最後。詳しくは[[フレーム処理]]を参照。 &b(){ProjHits = (Int型) };ヒットする数 省略時:1 -''ヒットカウント数ではなく、連続ヒットする回数'' --ヒットカウント数は[[SC-/Hitdef]]同様''NumHits''を使う。 --ヒットカウントではなくヒット回数での管理のため、複数相手でも指定回数ヒット。 --複数の相手に同時に命中すればProjHitsの数値より多いヒットカウントになるが、&br()個別に命中した場合は合計で設定値の回数分しか命中しない。 -ヒット回数の他、ProjPriorityの打ち消し・相殺の処理にも関係する。 &b(){ProjMissTime = (Int型) };連続ヒット制限 省略時:1?(毎フレーム) -ProjHitsの数が2以上の場合、ヒット毎の間隔を指定する。 --10とすれば一度命中した後、10F後2回目が命中する。 --Pausetimeの自分側が設定されているなら''自身のPausetime停止が終わった後から数える''。 ---Pausetimeが10,xでProjMisstimeが5とした場合、命中してから15F後に命中する。 ---相手が複数居ても待ち時間は変わらない。当てた相手に当たるようになるまで他には当たらない。 -ステコン一覧では省略時0(一度に全ヒット)とあるが少なくともWin版は1扱い。 &b(){ProjPriority = (Int型) };飛び道具の強度・優先度 省略時:1 -''Proj同士での相殺''の耐性値B。ProjHitsも耐久値に関わる。 --[[SC-/HitDef]]でのProjへの攻撃はProjPriorityに関係なくProj命中かProj打ち消しとなる。 --詳しい打ち消し処理については後述 :消失関係・範囲| &b(){ProjEdgeBound = (Int型) };画面外射程 省略時:40 -表示している画面の端からさらに指定値分外にでると消滅する。 --画面端の広さ設定は考慮しない。表示のまま。 &b(){ProjHeightBound = (上空Int型),(地面Int型) };画面上下射程 -省略時:-240,1 (空中-240、地面下1まで) --指定範囲の外側へ向けた速度があり、指定範囲の外側に居ると消滅する。 ---つまり上側の範囲外では上向きの速度がある場合、&br()下側範囲外なら下向き速度がある場合に消滅する。 ---範囲外でも上側の範囲外で下向きの速度、下の範囲外で上向き速度では消えない。 &b(){ProjStageBound = (Int型) };ステージ外射程 省略時:40 -外向きの速度をもって、カメラの動ける端からさらに指定値分外側に出ると消滅する。 --ステージの外側にいても、速度がステージ内側へ向いてるなら消滅しない。 --画面端の広さ設定は考慮しない。ほぼ表示のまま。 -[[座標]]について詳しくは該当ページを参照。 -※ProjEdgeBound(カメラ外)は速度に関係なく、外側へ出た時に消滅する。 -※ProjHeightBound (ステージ上下)、ProjStageBound (ステージ左右)は&br()外側に出ていてかつ外側へ向けた速度がある場合に消滅する。 :Pause無視系・MoveTime| &b(){SuperMoveTime = (Int型) };[[SC-/SuperPause]]を始動から指定フレーム中だけ無視 &b(){PauseMoveTime = (Int型) };[[SC-/Pause]]を始動から指定フレーム中だけ無視 -いずれも省略時は0、一切無視をしない。 --親キャラ(本体)にMoveTimeが無い場合、''MoveTimeが有っても動けない'' -ただし射出時点のフレームはMoveTimeに関わらず動く。※MoveTimeの分とは別計算? -''MoveTimeの影響時間はPause中の経過でなく射出からの時間''? --SuperMoveTime=120の場合、射出から約2秒間のみ影響を受けない。 --120設定なら射出から2秒以上経っている場合は影響を受ける。 :その他| &b(){▼[[SC-/AfterImage]]パラメータの全て} ステコン一覧には書かれていないが指定可能。 &b(){AfterImage.Time = (Int型) };AfterImageのTIme値 省略時:0 &b(){AfterImage.#### = #### };AfterImageの####値。 -AfterImage.####で[[SC-/AfterImage]]の設定項目を指定するとAftarimage(残像)を表示できる。 -[[SC-/AfterImage]]のPalBright値なら、AfterImage.PalBright=XX,XX,XXという感じ。 --なお、残像はProjが存在している間のみ有効。消失すると残像も全て即時消滅する。 --消滅時に表示消しつつ残像を一定時間残したい場合は、消滅アニメに無表示アニメを指定すると良い。 ---- **■Lv1-記述例・補足・注意点 :記述例| [State 1200, Projectile] Type = Projectile ;HitDef Trigger1 = AnimElem = 4 ;HitDef用のパラメータを記述する。 ;以下、Proj用に最低限必要な記述 ProjID = 1200 ;ProjID Offset = 20, -50 ;射出位置 Velocity = 3, 0 ;発射速度 ProjAnim = 1201 ;射出アニメ -必要最小限の設定 -必要なら細かいパラメーターを追加すること。 :補足| -残存時間に関しては[[SC-/Explod]]と非常に近い。 --[[消失処理のタイミング>フレーム処理]]は''ステート処理よりも後'' -Velocityによって移動するタイミングは''攻撃判定よりも前'' :ProjStageBound| -ProjStageBoundはステージ幅自体を基準とした数少ない処理の1つ。 --自由に使える処理としては唯一と言って良い。 -これを利用することで、ステージの幅を認識する手段が存在する。 --詳しくは[[座標]]のページの下Lv3の欄を参照。 :HitDefとの違い| [[SC-/HitDef]]とは一部、攻撃判定として処理に違いがある。 -''Pausetimeの自分側はProj自身にかかる''。本体には影響しない。 -''HitOnceが機能しない''。複数の相手が重なっている場合Porjは同時にヒットする。 --Projのヒット回数はProjHitsで設定されるため、&br()時間差で当たっていない相手にだけ当てることはできない。 -[[ステート奪取]]設定(P2GetP1State)をした場合に[[SC-/HitOverride]]が起動する場合にも通常ヒットはする。&br();HitDefのステート奪取設定ではそもそも命中自体しない。Projではステート奪取設定が無い攻撃として命中する。 ''※ただし処理の関係上、そもそもP2StateNo・P2GetP1Stateの設定は使うべきでない'' -それ以外にも細かい違いがある、はず。 :Helperとの違い| 飛び道具自体は[[Helperでも可能>Helper技術]]だが、それぞれに欠点がある。 -Helperの場合 --ステートを作成する要領で作成することができる。 --細かい記述を入れれば細かい制御もできる。 --[[リダイレクト]]を用いれば細かい確認もできる。 --ただし上限数があるため闇雲に使うことができない。 --制御を誤ると分身の発生する危険がある。 ---[[SC-/HitDef]]を使う場合[[SC-/ReversalDef]]の危険も。 ----ただしMoveTime(Pause中作動)を永続にするなら危険は減らせる。 -Projの場合 --記述は単純だが、細かい制御が一切できない。(更新Proj型で多少対応可能) ---攻撃力の更新などは更新Proj型のみ可能。 --個数確認とヒット確認以外の情報を確認できない。 --[[SC-/Pause]]などの停止で本体が停止した場合、動かない。 --[[SC-/ReversalDef]]の対象外。 --Win版では?:常に[[SC-/PalFX]]の影響を受ける。 --Pause中は本体が動けなければ動けない。 -[[更新Proj>Helper技術/更新Proj型攻撃判定飛び道具]]型については該当ページを参照。 --簡単に言うと「''Projを更新していく方式''」で細かい制御を行える。 --ただしその分、記述が面倒になりがち。 --Projの欠点としてPause中は本体が動けなければ動けない。 -なお更新Proj型の方式など使うとHitDef代替のProj型攻撃も可能。 --[[SC-/HitDef]]でないため[[SC-/ReversalDef]]に関与されない。 --欠点として本体へ自動でのPauseTimeを付加させることができない。 :注意点| -射出する際は必ず[[T-/Movetype]]をAにすること。 --それについて詳しくは[[発生1F目攻撃の弊害]]のページも参照。 -Projは射出時点のパラメータのみが有効で補正値の更新は&br()[[Projを更新していく方式>Helper技術/更新Proj型攻撃判定飛び道具]]でなければ不可。 --[[ダメージ]]のページも参照 -Projを参照するトリガーは個数確認とヒット確認しか存在しない。 --そのため、細かい状況を把握するには特殊な調査が必要になる。 -Projは&b(){[[SC-/Helper]]から実行しても本体の管理}になる。 --HelperからProjを出しても個数を確認する場合は本体の情報を参照する。 --「Root,NumProj」という具合。 -ProjRemoveTimeは影響・表示フレーム数で、残存時間は+1フレーム長い。 --[[SC-/Explod]]と同様に消滅するフレームでは存在が消えていない。 --1では「射出時点F(表示)→次Fの終了時点(消滅)」まで残る。 --詳しくは[[フレーム処理]]のページを参照。 --なお攻撃がヒットした場合はその時点で消滅している。 -ただし[[SC-/Pause]]などで''本体が動けない場合はProjは動かない''。 --PauseMoveTime,SuperMoveTimeは''本体に対応MoveTimeがある場合のみ有効'' --なお、射出したフレーム時点ではPauseに関わらず処理を行う。 ---ProjRemoveTime=1で本体停止中・MoveTime有りの場合、&br()アニメ表示が行われない(判定はあり命中もする) -Win版では、OwnPalが機能せず本体の[[SC-/PalFX]]の影響を受ける。 :P2GetP1State([[ステート奪取]])、P1StateNoについて| ''Projではステート変更のオプションを使用しないほうがよい''。 -もし[[ステートを奪われた状態>ステート奪取]]でProjが命中すると --ステートは奪われたままP1StateNoの指定番号の''相手側ステートを読み込む''。 --P2GetP1State(P2StateNo)については''本体ステートの主ステートを読み込む'' ---ステートを奪われている場合''ステートを奪っている犯人のステートを読みこませる'' ---場合によっては&b(){[[ステート奪取]]された状態で自身のステートを読み込むこともある。} なお常に本体管理になる関係上[[SC-/Helper]]からProjでは危険度が跳ね上がる。 -後述 :Pause中の親のMoveTimeについて| [[SC-/Pause]]、[[SC-/SuperPause]]での停止中、 Projは本体のMoveTimeが存在しない場合、ProjのMoveTimeが有っても動かない。 基本的に本体以外の停止で停止するというものだが、 例外的に攻撃が命中した際にもMoveTimeは発生する。 -そのため自分以外の時間停止中に攻撃を受けると、&br()停止していたProjが動くという現象が起きうる。 :Proj相殺・打ち消しの処理| Proj同士の相殺はProjのくらい判定同士が重なることによって発生する。 -AttrのP属性はHitDef用で、Projはくらい判定が互いにあればP属性が無くとも発生する。 Proj相殺は''ProjHitsとProjPriorityの合計値を比較''して処理をする。 -PH+PPの合計値が同一である場合、相殺して互いに消滅する。 -PH+PPの合計値の同一でない場合、多い方を残し、少ない方は打ち消される。 --残った側は(自分PH+PP)-(相手PH+PP)の数値まで、PH+PPが減少する。&br()''単なる相手PH+PPの合計値ではない。'' ---減少はProjPriority側から。減少値がProjPriority値を上回ったの分ProjHitsが減少する。 ---ProjPriorityが命中前に0だった場合、ProjHitsの減少処理の後ProjPriorityが-1される。 ---ProjPriorityがマイナスの場合、次の減算処理で更に自分PPのマイナス分ProjHitsが減少する。 ----ProjPriorityがマイナスでも、マイナスなだけでは消滅しない。 -計算例 --PH10,PP0のProjは、PH1,PP0のProjに4回目で相殺となる。 ---一回目10-1で残りProjHitsは9、PPが0だったため-1され合計値はPH9+PP-1の8。(攻撃は9回分) ---二回目8-1で残りProjHitsは7に、PPが更に-1されるため、合計値はPH7+PP-2の5。(攻撃は7回分) ---三回目5-1で残りProjHitsは4に、PPが更に-1で計-3、合計値はPH4+PP-3の1。(攻撃は4回分) ---四回目は1対1と同一値のため相殺が発生する。 --PH5,PP5のProjは、PH1,PP0のProjに7回目まで耐え、8回目で打ち消される。 ---一回目~五回目:PPが-1ずつ減っていき5回目でPPが0になるがProjHitsは5のまま維持される。 ---六回目:5-1でProjHitsが-1され、PPが0のため-1され合計値はPH4+PP-1の3(攻撃は4回分) ---七回目:3-1でProjHistは2に、PPが更に-1され合計値はPH2+PP-2の0(攻撃は2回分) ---八回目:0対1のため自分側が打ち消され、相手側が残る。 //:AI制作時の注意点| //-あれば //---- //**■Lv2-細かいバグ回避 //注意点で書いたことを回避したい場合用。 //---- //#region(■Lv3-細かい応用) //**■Lv3-細かい応用 //他の記述と組み合わせて使用する関係。 //#endregion ---- **■Lv-4-バグ応用 #region(■Lv4-ProjP1StateNo利用ステート奪取(通称:OTHキラー・トムキラー)) **ProjP1StateNo利用ステート奪取の仕組み ''※凶悪系技術※'' 通常のキャラでは絶対に使いません。 筆者は詳しくは知らないので多分の推測混じり。凶悪系では入門レベル。 以下、基本的な原理 -対象:[[SC-/HitDef]]を有する[[SC-/Helper]]を使用する相手 -[[SC-/ReversalDef]]で相手の該当Helperを[[ステート奪取]]。 -該当HelperからP1StateNo(''自分側変更'')指定したProjを射出する。 --P1StateNoの番号は該当Helperが読み込んでいたステート番号など。 --Projは''常に本体管理''のためステート変更するのは相手''本体''。 -そのProjを適当なくらい判定へ命中させ、相手のステートを変更させる。 --なお進まず・戻らず場合の回避手段として&br()別に通常ステートへ飛ばすProjを用意する場合も。 -相手本体に(元々飛び道具用だった)[[SC-/HitDef]]を実行させる。 -自分側の[[SC-/ReversalDef]]で相手本体の[[Target]]を取得する。 -あとは好きな様に料理する。 --最低限、相手がHitDefを持ったHelper飛び道具を使い、&br()攻撃判定のある相手アニメ、攻撃の通る相手ステートを知る必要がある。 --対策され[[SC-/HitDef]]が実行されない場合[[SC-/ReversalDef]]が当たらない。 応用としては -相手に読み込ませるステートを対象飛び道具のではなく、&br()くらい判定が有効な適当なステートにし通常の攻撃判定を当てる方法もある? -相手側が持っている殺害ステートを読み込ませて自殺させる手法もある。 -またHelper自体のステート奪取の方法は[[混線バグ>Target]]でも可。 由来などについてはニコニコMUGENwikiが詳しい。 //キャラに関することなのでコメントアウト。 //:OTHキラーの名前の由来| //本体がくらい判定・攻撃判定を持たずHelperで攻撃をする、 //「オメガトムハンクス(Omega Tom Hanks)」という凶悪キャラおり、 //そのキャラの殺害手段として初めて確立された手法であったため、 //その手法を「オメガトムハンクスキラー」略してトムキラー・OTHKなどと呼ぶようになった。 // //※なおオメガトムハンクス自身がそれを有しているわけではない。 //最初に搭載したのは608氏のD-Athena?とのこと。 // メモリ変更を用いない手法としては基本であり究極の特殊殺害法。 #endregion //---- //**コメント //細かい話し合い・確認が必要な場合に開放しましょう。 //#comment() //---- //:※解説修正情報※古い履歴| //●&font(12,b){日付:修正部分の概要} // ----
戻る→[[ステートコントローラーの一覧]] ---- :※解説修正情報※| //●&font(12,b){日付:修正部分の概要} ●&font(12,b){2017-03-25:P2getP1Stateの処理について} ●&font(12,b){2016-05-13:OffSetはFloat型の数値をそのまま入れるとエラーで落ちる。ただし例外有り?} ●&font(12,b){2015-11-07:Proj***Bound系について追記} ●&font(12,b){2014-10-18:ProjPriorityとProjHitsの関係性・相殺打ち消し計算が判明} ●&font(12,b){2014-10-18:ProjPriorityについて検証。またProj相殺処理はProjくらい判定同士で発生する模様} ●&font(12,b){2014-10-13:Scale処理について間違っていた。} ●&font(12,b){2014-10-11:PauseTime設定やProjHits・ProjMissTimeに関して。・HitDefとの性質の違いについて} ●&font(12,b){2013-06-20:P2getP1Stateの処理について} ---- //ほかページヘのリンクはLv0のみで。(Lv1~でリンクしようとすると煩雑になりそうなので) &b(){※検証の足りない部分が多々ありますので、使用する際は検証しつつ使いましょう} *■Projectile【飛び道具を発射する】 :▼概要| 飛び道具「Projectile」の射出を行う。「Proj」と略される。 [[SC-/HitDef]]とほぼ同様の攻撃定義を持ったアニメを発射する。 射出後はパラメーターに従って残存・消失する。 アニメを用意すれば基本HitDefの定義へProj用のパラメータを入れるだけで使える。 なお本体の[[T-/MoveType]]は影響しないが、、基本的に''Movetype=A''でなければならない。 :上限数| またProjは''キャラ毎の''総数に上限があり、それを超えると射出できなくなる。 限数は[[mugen.cfg>File-/MUGEN設定ファイル ]]で設定。 [[SC-/Explod]]や[[SC-/Helper]]と異なりプレイヤー毎の総数? //初期値不明? :Proj関連| 個数:[[T-/NumProj]][[T-/NumProjID()]] 命中:[[T-/ProjContact]][[T-/ProjHit]][[T-/ProjGuarded]] 命中後時間:[[T-/ProjContactTime()]][[T-/ProjHitTime()]][[T-/ProjGuardedTime()]] 相殺後時間:[[T-/ProjCancelTime()]] :▼必須記述| -パラメーター指定がなくてもエラー無し。 -ただし攻撃用に使用する場合は[[SC-/HitDef]]と同じ指定は必要。 :▼オプション| -攻撃定義:[[SC-/HitDef]]とほぼ同じ方式で記述する。 --''PauseTimeの自分側''は本体に影響を与えず、Projのみが停止するため''0''が望ましい。 ---停止中は「複数ヒットの処理」が停止される。アニメ処理や消滅処理は停止中でも行われる。 --[[Juggle]]値はAir.Juggleで指定する。本体のJuggle値設定は無関係? --なお[[SC-/HitDef]]同様、実行時点のパラメータのみが有効。 ---[[ダメージ]]のページも参照 --AffectTeamで味方に当たる設定でも、''管理キャラ自体には命中しない'' --Hitonce(単一ヒット設定)は機能しない? &b(){ProjID = (Int型) };Proj系トリガー情報に用いるID。HitIDとは異なる。 :射出位置| &b(){PosType = (文字列) };表示の基準点。Offset=0,0とする場所。 -''P1'':実行するキャラの座標。 省略時P1 -''P2'':P2相手の座標。(P2相手については[[リダイレクト]]参照) -''F'':Front:キャラの前の画面端,地面。 -''B'':Back:キャラの後ろの画面端,地面。 -''L'':Left:画面自体の左端,地面。 -''R'':Right:画面自体の右端,地面。 --Front,Back,Left,Rightは頭文字だけで識別?スペルミスしていても動く。 --F,B,L,Rは全て''地上の高さを基準として設定している'' --向きは常に''キャラの向き''が基準となる。 &b(){Offset = (X座標Float型), (Y座標Float型) };発射座標 省略時0,0 -座標指定パラメータは''PosではなくOffset''。間違えないように。 -※''Float型の数値をそのまま入れるとエラー落ちする模様''。数値入力ではInt型望ましいかも。 --※記述を工夫すると例外的にFloat型を使うことができるみたい? ---「Int型+Float型」など数式にして、数式の最初の数値をInt型にする。(例:10+0.13) ---Flaot型のトリガー情報を記述する。([FVar()]を含む) ----以上の書式にするとFloat型を使ってもエラーで落ちることも、エラーが流れる事も無い模様? :移動速度| &b(){Velocity = (X速度Float型), (Y速度Float型) };速度 省略時0,0(静止) &b(){Accel = (X加速度Float型), (Y加速度Float型) };加速度 省略時0,0(無変化) &b(){VelMul = (X速倍率Float型), (Y速倍率Float型) };速度倍率 省略時1,1(無変化) -速度の基準の向きはPosTypeの基準と同じ(向き基準) -速度がアニメの向きを制御し常に左右の''進行方向へ向く''。 --ただしAccelの値は射出時点の基準の向きで処理をする。 -Proj自体の移動速度。出現時点から移動する? --Accelは出現時点ではかからない? --攻撃判定は動いた跡に行われる。[[フレーム処理]]参照 &b(){RemVelocity = (X速度Float型), (Y速度Float型) };Remove時点の速度 -消失時点で''上書き設定される速度'' 省略時0,0(停止) :アニメ系| &b(){ProjAnim = (Int型) };基本アニメ 省略時0 -くらい判定がある場合、ProjやHitFlag=Pによる相殺が可能になる。 --Proj同士の相殺は''くらい判定同士の重なり''で発生する。攻撃判定は不要。 ---※Projのくらい判定は[[Ctrl+C>デバッグ]]では表示されないため確認には注意。 ---攻撃処理とは別でAttrにP属性を指定しなくてもProj同士である場合は相殺・打ち消しは発生する。 --HitDefによる打ち消しはHitDefの攻撃判定→Projのくらい判定によって成立する。 ---ただし同時にProj攻撃判定がhtidef側へ命中する場合、''Proj命中が優先され打ち消しが起きない'' &b(){ProjHitAnim = (Int型) };ヒット''消滅''時アニメ 省略時-1(無) &b(){ProjRemAnim = (Int型) };条件消失時アニメ 省略時HitAnimと同一 &b(){ProjCancelAnim = (Int型) };相殺時アニメ 省略時RemAnimと同一 -複数ヒットする設定の場合、消滅するヒットの時のみProjHitAnimに変化する -「RemAnim」の条件はProjRemoveTimeやBound系の適応消失時。 --ちなみにRemAnimに攻撃判定があると基本同様ヒットするらしい? &b(){ProjScale = (X縮尺Flaot型), (Y縮尺Float型) };表示スプライトの縮尺指定。省略時1,1 -''この設定では判定枠の大きさは変化しない'' -[[File-/CNSファイル]]のサイズ設定、Proj.DoScale設定を基準とした倍率を指定する。 --親サイズが2,2でもProj.DoScaleが0の場合は1,1を基準とし、ProjScale=2,2なら通常から2倍の表示。 --親サイズが2,2でProj.DoScaleが1だと2,2を基準とし、ProjScale=2,2なら通常から2☓2の4倍の表示に。 --[[SC-/Helper]]が親の場合、Helperの設定を基準とする。(省略時、その親と同じ) &b(){ProjSprPriority = (Int型) };アニメ表示優先度 省略時:3 :特殊効果| &b(){ProjShadow = (赤Int型), (緑Int型), (青Int型) };影設定 省略時0,0,0(影無し) -''-1''設定でステージ依存、255,255,255で真っ黒に。 //&b(){Proj = (Int型) }; :消失関係| &b(){ProjRemove = (bool型) };ヒット時の消失フラグ 省略時:1(ヒットで消失) -1の場合はProjHitsの残り回数が0になると消失する。 &b(){ProjRemoveTime = (Int型) };消失までの時間 -省略時:-1(時間では消失しない。) -カウントと消失は[[フレーム処理]]の最後。詳しくは[[フレーム処理]]を参照。 &b(){ProjHits = (Int型) };ヒットする数 省略時:1 -''ヒットカウント数ではなく、連続ヒットする回数'' --ヒットカウント数は[[SC-/Hitdef]]同様''NumHits''を使う。 --ヒットカウントではなくヒット回数での管理のため、複数相手でも指定回数ヒット。 --複数の相手に同時に命中すればProjHitsの数値より多いヒットカウントになるが、&br()個別に命中した場合は合計で設定値の回数分しか命中しない。 -ヒット回数の他、ProjPriorityの打ち消し・相殺の処理にも関係する。 &b(){ProjMissTime = (Int型) };連続ヒット制限 省略時:1?(毎フレーム) -ProjHitsの数が2以上の場合、ヒット毎の間隔を指定する。 --10とすれば一度命中した後、10F後2回目が命中する。 --Pausetimeの自分側が設定されているなら''自身のPausetime停止が終わった後から数える''。 ---Pausetimeが10,xでProjMisstimeが5とした場合、命中してから15F後に命中する。 ---相手が複数居ても待ち時間は変わらない。当てた相手に当たるようになるまで他には当たらない。 -ステコン一覧では省略時0(一度に全ヒット)とあるが少なくともWin版は1扱い。 &b(){ProjPriority = (Int型) };飛び道具の強度・優先度 省略時:1 -''Proj同士での相殺''の耐性値B。ProjHitsも耐久値に関わる。 --[[SC-/HitDef]]でのProjへの攻撃はProjPriorityに関係なくProj命中かProj打ち消しとなる。 --詳しい打ち消し処理については後述 :消失関係・範囲| &b(){ProjEdgeBound = (Int型) };画面外射程 省略時:40 -表示している画面の端からさらに指定値分外にでると消滅する。 --画面端の広さ設定は考慮しない。表示のまま。 &b(){ProjHeightBound = (上空Int型),(地面Int型) };画面上下射程 -省略時:-240,1 (空中-240、地面下1まで) --指定範囲の外側へ向けた速度があり、指定範囲の外側に居ると消滅する。 ---つまり上側の範囲外では上向きの速度がある場合、&br()下側範囲外なら下向き速度がある場合に消滅する。 ---範囲外でも上側の範囲外で下向きの速度、下の範囲外で上向き速度では消えない。 &b(){ProjStageBound = (Int型) };ステージ外射程 省略時:40 -外向きの速度をもって、カメラの動ける端からさらに指定値分外側に出ると消滅する。 --ステージの外側にいても、速度がステージ内側へ向いてるなら消滅しない。 --画面端の広さ設定は考慮しない。ほぼ表示のまま。 -[[座標]]について詳しくは該当ページを参照。 -※ProjEdgeBound(カメラ外)は速度に関係なく、外側へ出た時に消滅する。 -※ProjHeightBound (ステージ上下)、ProjStageBound (ステージ左右)は&br()外側に出ていてかつ外側へ向けた速度がある場合に消滅する。 :Pause無視系・MoveTime| &b(){SuperMoveTime = (Int型) };[[SC-/SuperPause]]を始動から指定フレーム中だけ無視 &b(){PauseMoveTime = (Int型) };[[SC-/Pause]]を始動から指定フレーム中だけ無視 -いずれも省略時は0、一切無視をしない。 --親キャラ(本体)にMoveTimeが無い場合、''MoveTimeが有っても動けない'' -ただし射出時点のフレームはMoveTimeに関わらず動く。※MoveTimeの分とは別計算? -''MoveTimeの影響時間はPause中の経過でなく射出からの時間''? --SuperMoveTime=120の場合、射出から約2秒間のみ影響を受けない。 --120設定なら射出から2秒以上経っている場合は影響を受ける。 :その他| &b(){▼[[SC-/AfterImage]]パラメータの全て} ステコン一覧には書かれていないが指定可能。 &b(){AfterImage.Time = (Int型) };AfterImageのTIme値 省略時:0 &b(){AfterImage.#### = #### };AfterImageの####値。 -AfterImage.####で[[SC-/AfterImage]]の設定項目を指定するとAftarimage(残像)を表示できる。 -[[SC-/AfterImage]]のPalBright値なら、AfterImage.PalBright=XX,XX,XXという感じ。 --なお、残像はProjが存在している間のみ有効。消失すると残像も全て即時消滅する。 --消滅時に表示消しつつ残像を一定時間残したい場合は、消滅アニメに無表示アニメを指定すると良い。 ---- **■Lv1-記述例・補足・注意点 :記述例| [State 1200, Projectile] Type = Projectile ;HitDef Trigger1 = AnimElem = 4 ;HitDef用のパラメータを記述する。 ;以下、Proj用に最低限必要な記述 ProjID = 1200 ;ProjID Offset = 20, -50 ;射出位置 Velocity = 3, 0 ;発射速度 ProjAnim = 1201 ;射出アニメ -必要最小限の設定 -必要なら細かいパラメーターを追加すること。 :補足| -残存時間に関しては[[SC-/Explod]]と非常に近い。 --[[消失処理のタイミング>フレーム処理]]は''ステート処理よりも後'' -Velocityによって移動するタイミングは''攻撃判定よりも前'' :ProjStageBound| -ProjStageBoundはステージ幅自体を基準とした数少ない処理の1つ。 --自由に使える処理としては唯一と言って良い。 -これを利用することで、ステージの幅を認識する手段が存在する。 --詳しくは[[座標]]のページの下Lv3の欄を参照。 :HitDefとの違い| [[SC-/HitDef]]とは一部、攻撃判定として処理に違いがある。 -''Pausetimeの自分側はProj自身にかかる''。本体には影響しない。 -''HitOnceが機能しない''。複数の相手が重なっている場合Porjは同時にヒットする。 --Projのヒット回数はProjHitsで設定されるため、&br()時間差で当たっていない相手にだけ当てることはできない。 -[[ステート奪取]]設定(P2GetP1State)をした場合に[[SC-/HitOverride]]が起動する場合にも通常ヒットはする。&br();HitDefのステート奪取設定ではそもそも命中自体しない。Projではステート奪取設定が無い攻撃として命中する。 ''※ただし処理の関係上、そもそもP2StateNo・P2GetP1Stateの設定は使うべきでない'' -それ以外にも細かい違いがある、はず。 :Helperとの違い| 飛び道具自体は[[Helperでも可能>Helper技術]]だが、それぞれに欠点がある。 -Helperの場合 --ステートを作成する要領で作成することができる。 --細かい記述を入れれば細かい制御もできる。 --[[リダイレクト]]を用いれば細かい確認もできる。 --ただし上限数があるため闇雲に使うことができない。 --制御を誤ると分身の発生する危険がある。 ---[[SC-/HitDef]]を使う場合[[SC-/ReversalDef]]の危険も。 ----ただしMoveTime(Pause中作動)を永続にするなら危険は減らせる。 -Projの場合 --記述は単純だが、細かい制御が一切できない。(更新Proj型で多少対応可能) ---攻撃力の更新などは更新Proj型のみ可能。 --個数確認とヒット確認以外の情報を確認できない。 --[[SC-/Pause]]などの停止で本体が停止した場合、動かない。 --[[SC-/ReversalDef]]の対象外。 --Win版では?:常に[[SC-/PalFX]]の影響を受ける。 --Pause中は本体が動けなければ動けない。 -[[更新Proj>Helper技術/更新Proj型攻撃判定飛び道具]]型については該当ページを参照。 --簡単に言うと「''Projを更新していく方式''」で細かい制御を行える。 --ただしその分、記述が面倒になりがち。 --Projの欠点としてPause中は本体が動けなければ動けない。 -なお更新Proj型の方式など使うとHitDef代替のProj型攻撃も可能。 --[[SC-/HitDef]]でないため[[SC-/ReversalDef]]に関与されない。 --欠点として本体へ自動でのPauseTimeを付加させることができない。 :注意点| -射出する際は必ず[[T-/Movetype]]をAにすること。 --それについて詳しくは[[発生1F目攻撃の弊害]]のページも参照。 -Projは射出時点のパラメータのみが有効で補正値の更新は&br()[[Projを更新していく方式>Helper技術/更新Proj型攻撃判定飛び道具]]でなければ不可。 --[[ダメージ]]のページも参照 -Projを参照するトリガーは個数確認とヒット確認しか存在しない。 --そのため、細かい状況を把握するには特殊な調査が必要になる。 -Projは&b(){[[SC-/Helper]]から実行しても本体の管理}になる。 --HelperからProjを出しても個数を確認する場合は本体の情報を参照する。 --「Root,NumProj」という具合。 -ProjRemoveTimeは影響・表示フレーム数で、残存時間は+1フレーム長い。 --[[SC-/Explod]]と同様に消滅するフレームでは存在が消えていない。 --1では「射出時点F(表示)→次Fの終了時点(消滅)」まで残る。 --詳しくは[[フレーム処理]]のページを参照。 --なお攻撃がヒットした場合はその時点で消滅している。 -ただし[[SC-/Pause]]などで''本体が動けない場合はProjは動かない''。 --PauseMoveTime,SuperMoveTimeは''本体に対応MoveTimeがある場合のみ有効'' --なお、射出したフレーム時点ではPauseに関わらず処理を行う。 ---ProjRemoveTime=1で本体停止中・MoveTime有りの場合、&br()アニメ表示が行われない(判定はあり命中もする) -Win版では、OwnPalが機能せず本体の[[SC-/PalFX]]の影響を受ける。 :P2GetP1State([[ステート奪取]])、P1StateNoについて| ''Projではステート変更のオプションを使用しないほうがよい''。 -もし[[ステートを奪われた状態>ステート奪取]]でProjが命中すると --ステートは奪われたままP1StateNoの指定番号の''相手側ステートを読み込む''。 --P2GetP1State(P2StateNo)については''本体ステートの主ステートを読み込む'' ---ステートを奪われている場合''ステートを奪っている犯人のステートを読みこませる'' ---場合によっては&b(){[[ステート奪取]]された状態で自身のステートを読み込むこともある。} なお常に本体管理になる関係上[[SC-/Helper]]からProjでは危険度が跳ね上がる。 -後述 :Pause中の親のMoveTimeについて| [[SC-/Pause]]、[[SC-/SuperPause]]での停止中、 Projは本体のMoveTimeが存在しない場合、ProjのMoveTimeが有っても動かない。 基本的に本体以外の停止で停止するというものだが、 例外的に攻撃が命中した際にもMoveTimeは発生する。 -そのため自分以外の時間停止中に攻撃を受けると、&br()停止していたProjが動くという現象が起きうる。 :Proj相殺・打ち消しの処理| Proj同士の相殺はProjのくらい判定同士が重なることによって発生する。 -AttrのP属性はHitDef用で、Projはくらい判定が互いにあればP属性が無くとも発生する。 Proj相殺は''ProjHitsとProjPriorityの合計値を比較''して処理をする。 -PH+PPの合計値が同一である場合、相殺して互いに消滅する。 -PH+PPの合計値の同一でない場合、多い方を残し、少ない方は打ち消される。 --残った側は(自分PH+PP)-(相手PH+PP)の数値まで、PH+PPが減少する。&br()''単なる相手PH+PPの合計値ではない。'' ---減少はProjPriority側から。減少値がProjPriority値を上回ったの分ProjHitsが減少する。 ---ProjPriorityが命中前に0だった場合、ProjHitsの減少処理の後ProjPriorityが-1される。 ---ProjPriorityがマイナスの場合、次の減算処理で更に自分PPのマイナス分ProjHitsが減少する。 ----ProjPriorityがマイナスでも、マイナスなだけでは消滅しない。 -計算例 --PH10,PP0のProjは、PH1,PP0のProjに4回目で相殺となる。 ---一回目10-1で残りProjHitsは9、PPが0だったため-1され合計値はPH9+PP-1の8。(攻撃は9回分) ---二回目8-1で残りProjHitsは7に、PPが更に-1されるため、合計値はPH7+PP-2の5。(攻撃は7回分) ---三回目5-1で残りProjHitsは4に、PPが更に-1で計-3、合計値はPH4+PP-3の1。(攻撃は4回分) ---四回目は1対1と同一値のため相殺が発生する。 --PH5,PP5のProjは、PH1,PP0のProjに7回目まで耐え、8回目で打ち消される。 ---一回目~五回目:PPが-1ずつ減っていき5回目でPPが0になるがProjHitsは5のまま維持される。 ---六回目:5-1でProjHitsが-1され、PPが0のため-1され合計値はPH4+PP-1の3(攻撃は4回分) ---七回目:3-1でProjHistは2に、PPが更に-1され合計値はPH2+PP-2の0(攻撃は2回分) ---八回目:0対1のため自分側が打ち消され、相手側が残る。 //:AI制作時の注意点| //-あれば //---- //**■Lv2-細かいバグ回避 //注意点で書いたことを回避したい場合用。 //---- //#region(■Lv3-細かい応用) //**■Lv3-細かい応用 //他の記述と組み合わせて使用する関係。 //#endregion ---- **■Lv-4-バグ応用 #region(■Lv4-ProjP1StateNo利用ステート奪取(通称:OTHキラー・トムキラー)) **ProjP1StateNo利用ステート奪取の仕組み ''※凶悪系技術※'' 通常のキャラでは絶対に使いません。 筆者は詳しくは知らないので多分の推測混じり。凶悪系では入門レベル。 以下、基本的な原理 -対象:[[SC-/HitDef]]を有する[[SC-/Helper]]を使用する相手 -[[SC-/ReversalDef]]で相手の該当Helperを[[ステート奪取]]。 -該当HelperからP1StateNo(''自分側変更'')指定したProjを射出する。 --P1StateNoの番号は該当Helperが読み込んでいたステート番号など。 --Projは''常に本体管理''のためステート変更するのは相手''本体''。 -そのProjを適当なくらい判定へ命中させ、相手のステートを変更させる。 --なお進まず・戻らず場合の回避手段として&br()別に通常ステートへ飛ばすProjを用意する場合も。 -相手本体に(元々飛び道具用だった)[[SC-/HitDef]]を実行させる。 -自分側の[[SC-/ReversalDef]]で相手本体の[[Target]]を取得する。 -あとは好きな様に料理する。 --最低限、相手がHitDefを持ったHelper飛び道具を使い、&br()攻撃判定のある相手アニメ、攻撃の通る相手ステートを知る必要がある。 --対策され[[SC-/HitDef]]が実行されない場合[[SC-/ReversalDef]]が当たらない。 応用としては -相手に読み込ませるステートを対象飛び道具のではなく、&br()くらい判定が有効な適当なステートにし通常の攻撃判定を当てる方法もある? -相手側が持っている殺害ステートを読み込ませて自殺させる手法もある。 -またHelper自体のステート奪取の方法は[[混線バグ>Target]]でも可。 由来などについてはニコニコMUGENwikiが詳しい。 //キャラに関することなのでコメントアウト。 //:OTHキラーの名前の由来| //本体がくらい判定・攻撃判定を持たずHelperで攻撃をする、 //「オメガトムハンクス(Omega Tom Hanks)」という凶悪キャラおり、 //そのキャラの殺害手段として初めて確立された手法であったため、 //その手法を「オメガトムハンクスキラー」略してトムキラー・OTHKなどと呼ぶようになった。 // //※なおオメガトムハンクス自身がそれを有しているわけではない。 //最初に搭載したのは608氏のD-Athena?とのこと。 // メモリ変更を用いない手法としては基本であり究極の特殊殺害法。 #endregion //---- //**コメント //細かい話し合い・確認が必要な場合に開放しましょう。 //#comment() //---- //:※解説修正情報※古い履歴| //●&font(12,b){日付:修正部分の概要} // ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: