「砂場ページ」の編集履歴(バックアップ)一覧に戻る

砂場ページ - (2013/06/25 (火) 00:25:58) の編集履歴(バックアップ)



ページ編集の練習・確認用ページ

  • メモ帳などで書いたデータの確認とかに。
  • 大事なデータはここで保管しない。



■更新Proj型・Projectile更新方式

SC-/Projectileを1Fずつ更新する方式。
短い通称は無いがここでは更新Proj、もしくは2FProjと称する。
基本的にはHelperから使う。
毎F更新するためProjectileの欠点である更新できない点は解消できる。

基本的な原理
1.1Fだけ判定を持った2Fだけ残るProjを射出する。(基本Helperから)
2.そのProjが残っている場合、Projを再発射しつづける。
以下詳しく
  • 攻撃判定開始のタイミングで最初の1Fだけ判定をもったSC-/Projectileを射出する。
    • その際ProjRemovetime=1とする。これにより次のフレームまで残る。
    • PauseTimeの自分側は0とする?
    • ※ProjRemoveTimeでの消滅は残り時間が無くなった次のフレームの最後のため
      ProjRemoveTime=1設定ならステート内換算で2F分残る。
    • ※攻撃の判定はProjRemoveTimeで指定した時間分のみ。
  • 次のフレームで射出したProjが残存している場合、再度Projを発射する
    • 命中すると、命中フレーム時点で消滅するため更新も終わる。
  • Projの消滅を確認後、親の動作を終了(Helperなら消滅させる)
攻撃判定のみならoffset=(vel X),(Vel Y)で速度分位置補正だけする。
独立飛び道具ならOffsetを更新ごとに調整し、飛んでいるように見せる。
  • 独立飛び道具型で表示をOwnPal=0にしたい場合は[[SC-/Explod]を同じ座標へ重ねる。
    • Explodを重ねると命中消滅は1F遅れるが、それは通常のHelper型飛び道具と同様。

主な利用方法
攻撃判定をProjにし、SC-/ReversalDefを無効化する。
  • アニメには判定だけつけ画像は基本的につけない。
  • 基本的にSC-/Helperの飛び道具と組み合わせて使う。
    • Targetが本体管理になるためヒットカウントリセットバグが起きない。
    • Juggleの管理も本体基準のためJuggle値での制限が可能になる。
  • 本体へPauseTimeが適応できないため、本体での使用は特殊な場合に限る。
  • 別々の相手への時間差の複数ヒットが管理できない。
    • 一段型の飛び道具なら問題ないが連続ヒットタイプでは若干挙動が違う。
SC-/HelperからProjの座標を管理し単一のHelperで大量の飛び道具を管理する。
  • アニメには判定と画像を付ける。画像をExplod化するなら画像は別アニメに。
  • 攻撃判定Proj化と同じメリットがある。
  • Helperから管理することでProjのみではできない挙動を行わせる事が可能。
  • SC-/Helperには固定の上限数があるがProjはいくらでも増やせる。
    • これにより大量な特殊な挙動をする飛び道具を再現できる。
  • 特殊な管理にすれば常駐させたHelperを使い回すこともできる。

注意点
SC-/Projectileなどの注意点も参照。
  • Projectileの向きは進行方向向き固定なので向きの管理には注意
  • Proj,ExplodはSC-/AngleSetのように回転させることができない。
    • 回転させたいなら回転用のアニメを別途登録する必要がある。

後なんだろ…


■射出条件記述について

※記述については検証不足。ミスあるかも※

ProjIDについて
Projを再射出する際root,NumProjID(xxx)=1で判定を行うため、
他管理のProjとIDが重複してしまうと上手く処理を行うことができない。
  • 全て本体管理のため別々のHelperからでもProjIDが同じだと重複してしまう。
  • ProjIDは重複することが無いよう(xx00+ID)などで管理すること。
  • 単一Helperから複数Projを出す場合は、xx00のxx桁部分で区別する。
  • なおT-/IDの値は上限が無いため+100や+200と言った数値になる可能性もある。
    • そうした高い数値になっても重複しないように気をつけること
    • 本体などから固定のProjIDで射出するProjのProjIDは
      IDを足して使うProjIDよりも低い数値にすること。

■Helperの攻撃判定差し替え用・HitDef→Projへの差し替え
type=HitDefをtype=Projectileにするというタイプの例
画像はHelper側で表示し、Projのアニメは攻撃判定のみにすること
PauseTimeの自分側は0に変えること
ヒットポーズの動作停止を再現したい場合T-/ProjContactTime()の条件で
基本処理を止め、SC-/PosFreezeを実行するなど自前で処理を停止させると良い。

;出来れば入れておいた方がいいパラメータ
ProjEdgeBound = 1000 ;画面外射程・基本親Helper側で管理するので大きい数値に
ProjHeightBound = -1000,1000 ;画面上下射程
ProjStageBound = 1000 ;ステージ外射程

■単発・時間経過消滅タイプ

Type = Projectile ; HitDef
Trigger1 = !Time ;射出開始
Trigger1 = Root,NumProjID(1200 + ID) = 0; 重複を防ぐ
Trigger2 = Time < 180 ;再射出終了タイミング
Trigger2 = Root,NumProjID(1200 + ID) = 1; 再射出
ProjID = 1200 + ID ;★ ProjID
PosType = P1 ;射出位置
Offset = (Vel X),(Vel Y) ;速度補正
ProjAnim = 1201 ;★攻撃判定表示用アニメ
ProjRemoveTime = 1 ;固定
; HitDef用のパラメーターも含めて記述する。

■多段型・時間更新タイプ
;PauseTimeを再現したい場合は他のステコンへ処理停止記述を入れる事。

Type = Projectile ; HitDef
Trigger1 = ( AnimElem = 2 ) || ( AnimElem = 7 ) || ( AnimElem = 12 );射出タイミング・再射出タイミング
Trigger1 = Root,NumProjID(1300 + ID) = 0; 重複を防ぐ
Trigger2 = Root,NumProjID(1300 + ID) = 1; 再射出
ProjID = 1300 + ID ;★ProjID
PosType = P1 ;射出位置
Offset = (Vel X),(Vel Y) ;速度補正
ProjAnim = 1301 ;★攻撃判定表示用アニメ
ProjRemoveTime = 1 ;固定
; HitDef用のパラメーターも含めて記述する。

■多段型・ヒット数タイプ ※var必須
;PauseTimeを再現したい場合は他のステコンへ処理停止記述を入れる事。

Type = Projectile ; HitDef
Trigger1 = !Time || Root,ProjContactTime(1400 + ID) > 15 && Var(50) < 3
Trigger1 = Root,NumProjID(1400 + ID) = 0; 重複を防ぐ
Trigger2 = Root,NumProjID(1400 + ID) = 1; 再射出
Trigger3 = Root,ProjContactTime(1400 + ID) = 1 ;命中直後
Trigger3 = var(50) := var(50) + 1 ;ヒットをカウント
trigger3 = 0 ;射出はしない。
ProjID = 1400 + ID ;★ ProjID
PosType = P1 ;射出位置
Offset = (Vel X),(Vel Y) ;速度補正
ProjAnim = 1401 ;★攻撃判定表示用アニメ
ProjRemoveTime = 1 ;固定
; HitDef用のパラメーターも含めて記述する。