「SC-/Projectile」の編集履歴(バックアップ)一覧に戻る
SC-/Projectile - (2014/10/11 (土) 18:41:59) の編集履歴(バックアップ)
- ※解説修正情報※
- ●2013-06-20:P2getP1Stateの処理について
- ●2014-10-11:PauseTime設定やProjHits・ProjMissTimeに関して。
※検証の足りない部分が多々ありますので、使用する際は検証しつつ使いましょう
■Projectile【飛び道具を発射する】
- ▼概要
- 飛び道具「Projectile」の射出を行う。「Proj」と略される。
- SC-/HitDefとほぼ同様の攻撃定義を持ったアニメを発射する。
- 射出後はパラメーターに従って残存・消失する。
- アニメを用意すれば基本HitDefの定義へProj用のパラメータを入れるだけで使える。
- なお本体のT-/MoveTypeは影響しないが、、基本的にMovetype=Aでなければならない。
- 上限数
- またProjはキャラ毎の総数に上限があり、それを超えると射出できなくなる。
- 限数はmugen.cfgで設定。
- SC-/ExplodやSC-/Helperと異なりプレイヤー毎の総数?
- Proj関連
- 個数:T-/NumProjT-/NumProjID()
- 命中:T-/ProjContactT-/ProjHitT-/ProjGuarded
- 命中後時間:T-/ProjContactTime()T-/ProjHitTime()T-/ProjGuardedTime()
- 相殺後時間:T-/ProjCancelTime()
- ▼必須記述
- パラメーター指定がなくてもエラー無し。
- ただし攻撃用に使用する場合はSC-/HitDefと同じ指定は必要。
- ▼オプション
- 攻撃定義:SC-/HitDefとほぼ同じ方式で記述する。
- PauseTimeの自分側は本体に影響を与えず、Projのみが停止するため0が望ましい。
- 停止中は「複数ヒットの処理」が停止される。アニメ処理や消滅処理は停止中でも行われる。
- Juggle値はAir.Juggleで指定する。本体のJuggle値設定は無関係?
- なおSC-/HitDef同様、実行時点のパラメータのみが有効。
- AffectTeamで味方に当たる設定でも、管理キャラ自体には命中しない
- Hitonce(単一ヒット設定)は機能しない?
- ProjID = (Int型);Proj系トリガー情報に用いるID。HitIDとは異なる。
- 射出位置
- 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は全て表示の高さを地上として設定している
- 向きは常にキャラの向きが基準となる。
- Offset = (X座標Float型), (Y座標Float型);発射座標 省略時0,0
- 座標指定パラメータはPosではなくOffset。間違えないように。
- 移動速度
- Velocity = (X速度Float型), (Y速度Float型);速度 省略時0,0(静止)
- Accel = (X加速度Float型), (Y加速度Float型);加速度 省略時0,0(無変化)
- VelMul = (X速倍率Float型), (Y速倍率Float型);速度倍率 省略時1,1(無変化)
- 速度の基準の向きはPosTypeの基準と同じ(向き基準)
- 速度がアニメの向きを制御し常に左右の進行方向へ向く。
- ただしAccelの値は射出時点の基準の向きで処理をする。
- Proj自体の移動速度。出現時点から移動する?
- Accelは出現時点ではかからない?
- 攻撃判定は動いた跡に行われる。フレーム処理参照
- RemVlocity = (X速度Float型), (Y速度Float型);Remove時点の速度
- 消失時点で上書き設定される速度 省略時0,0(停止)
- アニメ系
- ProjAnim = (Int型);基本アニメ 省略時0
- くらい判定がある場合、ProjやHitFlag=Pによる相殺が可能になる。
- ProjHitAnim = (Int型);ヒット消滅時アニメ 省略時-1(無)
- ProjRemAnim = (Int型);条件消失時アニメ 省略時HitAnimと同一
- ProjCancelAnim = (Int型);相殺時アニメ 省略時RemAnimと同一
- 複数ヒットする設定の場合、消滅するヒットの時のみProjHitAnimに変化する
- 「RemAnim」の条件はProjRemoveTimeやBound系の適応消失時。
- ちなみにRemAnimに攻撃判定があると基本同様ヒットするらしい?
- ProjScale = (X縮尺Flaot型), (Y縮尺Float型);縮尺指定。
- File-/CNSファイルのProj.DoScaleが1の場合、省略時Sclae値に。
- Proj.DoScaleが0の場合は、1,1(通常値)
- ProjSprPriority = (Int型);アニメ表示優先度 省略時:3
- 特殊効果
- ProjShadow = (赤Int型), (緑Int型), (青Int型);影設定 省略時0,0,0(影無し)
- -1設定でステージ依存、255,255,255で真っ黒に。
- 消失関係
- ProjRemove = (bool型);ヒット時の消失フラグ 省略時:1(ヒットで消失)
- 1の場合はProjHitsの残り回数が0になると消失する。
- ProjRemoveTime = (Int型);消失までの時間
- ProjHits = (Int型);ヒットする数 省略時:1
- ヒットカウント数ではなく、連続ヒットする回数
- ヒットカウント数はSC-/Hitdef同様NumHitsを使う。
- ヒットカウントではなくヒット回数での管理のため、複数相手でも指定回数ヒット。
- 複数の相手に同時に命中すればProjHitsの数値より多いヒットカウントになるが、
個別に命中した場合は合計で設定値の回数分しか命中しない。
- ProjMissTime = (Int型);連続ヒット制限 省略時:1?(毎フレーム)
- ProjHitsの数が2以上の場合、ヒット毎の間隔を指定する。
- 10とすれば一度命中した後、10F後2回目が命中する。
- Pausetimeの自分側が設定されているなら自身のPausetime停止が終わった後から数える。
- Pausetimeが10,xでProjMisstimeが5とした場合、命中してから15F後に命中する。
- 相手が複数居ても待ち時間は変わらない。当てた相手に当たるようになるまで他には当たらない。
- ステコン一覧では省略時0(一度に全ヒット)とあるが少なくともWin版は1扱い。
- ProjPriority = (Int型);飛び道具の強度・優先度 省略時:1
- Projに命中する攻撃への耐性値。※検証不足※
- Proj同士での相殺はProjPriuorityで片方のみが残り、片方が消える。
- それによって相手を消す度に、ProjPriorityは1ずつ減衰する。
- 値が同じ場合は互いにProjHit分を消費する。
- 消失関係・範囲
- ProjEdgeBound = (Int型);画面外射程 省略時:40
- 表示している画面の端からさらに指定値分外にでると消滅する。
- ProjHeightBound = (上空Int型),(地面Int型);画面上下射程
- 省略時:-240,1 (空中-240、地面下1まで)
- ProjStageBound = (Int型);ステージ外射程 省略時:40
- カメラの動ける端からさらに指定値分外に出ると消滅する。
- 座標について詳しくは該当ページを参照。
- これらの設定は移動速度が無いと機能しない?こともない。
- Pause無視系・MoveTime
- SuperMoveTime = (Int型);SC-/SuperPauseを始動から指定フレーム中だけ無視
- PauseMoveTime = (Int型);SC-/Pauseを始動から指定フレーム中だけ無視
- いずれも省略時は0、一切無視をしない。
- 親キャラ(本体)にMoveTimeが無い場合、MoveTimeが有っても動けない
- ただし射出時点のフレームはMoveTimeに関わらず動く。※MoveTimeの分とは別計算?
- MoveTimeの影響時間はPause中の経過でなく射出からの時間?
- SuperMoveTime=120の場合、射出から約2秒間のみ影響を受けない。
- 120設定なら射出から2秒以上経っている場合は影響を受ける。
- その他
- ▼SC-/AfterImageパラメータの全て ステコン一覧には書かれていないが指定可能。
- AfterImage.Time = (Int型);AfterImageのTIme値 省略時:0
- 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つ。
- これを利用することで、ステージの幅を認識する手段が存在する。
- Helperとの違い
- 飛び道具自体はHelperでも可能だが、それぞれに欠点がある。
- Helperの場合
- ステートを作成する要領で作成することができる。
- 細かい記述を入れれば細かい制御もできる。
- リダイレクトを用いれば細かい確認もできる。
- ただし上限数があるため闇雲に使うことができない。
- 制御を誤ると分身の発生する危険がある。
- Projの場合
- 更新Proj型についてはは該当ページを参照?
- 簡単に言うと「Projを更新していく方式」で細かい制御を行える。
- ただしその分、記述が面倒になりがち。
- Projの欠点としてPause中は本体が動けなければ動けない。
- なお更新Proj型の方式など使うとHitDef代替のProj型攻撃も可能。
- 注意点
- 射出する際は必ずT-/MovetypeをAにすること。
- Projは射出時点のパラメータのみが有効で補正値の更新は
Projを更新していく方式でなければ不可。
- Projを参照するトリガーは個数確認とヒット確認しか存在しない。
- そのため、細かい状況を把握するには特殊な調査が日宇町になる。
- ProjはSC-/Helperから実行しても本体の管理になる。
- HelperからProjを出しても個数を確認する場合は本体の情報を参照する。
- 「Root,NumProj」という具合。
- ProjRemoveTimeは影響・表示フレーム数で、残存時間は+1フレーム長い。
- SC-/Explodと同様に消滅するフレームでは存在が消えていない。
- 1では「射出時点F(表示)→次Fの終了時点(消滅)」まで残る。
- 詳しくはフレーム処理のページを参照。
- なお攻撃がヒットした場合はその時点で消滅している。
- ただしSC-/Pauseなどで本体が動けない場合はProjは動かない。
- PauseMoveTime,SuperMoveTimeは本体に対応MoveTimeがある場合のみ有効
- なお、射出したフレーム時点ではPauseに関わらず処理を行う。
- ProjRemoveTime=1で本体停止中・MoveTime有りの場合、
アニメ表示が行われない(判定はあり命中もする)
- Win版では、OwnPalが機能せず本体のSC-/PalFXの影響を受ける。
- P2GetP1State(ステート奪取)、P1StateNoについて
- Projではステート変更のオプションを使用しないほうがよい。
- もしステートを奪われた状態でProjが命中すると
- ステートは奪われたままP1StateNoの指定番号の相手側ステートを読み込む。
- P2GetP1State(P2StateNo)については本体ステートの主ステートを読み込む
- ステートを奪われている場合ステートを奪っている犯人のステートを読みこませる
- 場合によってはステート奪取された状態で自身のステートを読み込むこともある。
- なお常に本体管理になる関係上SC-/HelperからProjでは危険度が跳ね上がる。
- Pause中の親のMoveTimeについて
- SC-/Pause、SC-/SuperPauseでの停止中、
- Projは本体のMoveTimeが存在しない場合、ProjのMoveTimeが有っても動かない。
- 基本的に本体以外の停止で停止するというものだが、
- 例外的に攻撃が命中した際にもMoveTimeは発生する。
- そのため自分以外の時間停止中に攻撃を受けると、
停止していたProjが動くという現象が起きうる。
■Lv-4-バグ応用
+
|
■Lv4-ProjP1StateNo利用ステート奪取(通称:OTHキラー・トムキラー) |
ProjP1StateNo利用ステート奪取の仕組み
※凶悪系技術※ 通常のキャラでは絶対に使いません。
筆者は詳しくは知らないので多分の推測混じり。凶悪系では入門レベル。
以下、基本的な原理
応用としては
- 相手に読み込ませるステートを対象飛び道具のではなく、
くらい判定が有効な適当なステートにし通常の攻撃判定を当てる方法もある?
- 相手側が持っている殺害ステートを読み込ませて自殺させる手法もある。
- またHelper自体のステート奪取の方法は混線バグでも可。
由来などについてはニコニコMUGENwikiが詳しい。
メモリ変更を用いない手法としては基本であり究極の特殊殺害法。
|