堕落街道まっしぐら。

現在のゲームプレイ状況: アリスギア = ウマ娘 > DMMブラゲ > Crossout >> それ以外

MUGEN/暑くて眠れにゃい

イメージ 1

キャーやっちゃった。

原作風に言うと、
{*跳弾→スライディング→Rスピン→マリリン→通常1234cRS→マリリン→通常123cHS
→落ちる前にスピン→マリリン→*即時装填→通常123cRS→MHS}
で上記の通り6割弱。原作でできるかは決闘やらないので知らないさ。多分できないと思うけど。

HS後のスピンで拾うのがややシビアだけど、2ゲージ消費してることを含めてもちょっと減りすぎた。
まぁ予定してるクールタイム調整でそのスピンがクール間に合わなくなると思うから今だけ。

~ ~ ~

>>
見てましたか。貴様見ているn(ry

向こうでも書きましたが、私はProjectileはほとんど・・・というより、
更新後はおそらく(例外を除いて)飛び道具記述としては一切使用してません。
灼熱弾の爆発や冷凍弾の凍結処理あたり考えるとどうしても力不足なので。

なわけでHelperさん。手っ取り早く例を持ち出して。


ここから本体側ステート-----------------------------------

[StateDef 2000] ; ステート頭の定義分
type = S ;いつもの物理状態定義
movetype = A ;いつもの行動状態定義
physics = S ;いつもの重力・摩擦状態定義
anim = 2000 ;アニメ番号
ctrl = 0 ;操作できない

[State 2000, 0]; 暗転とか
type = SuperPause
<省略>

[State 2000, 1]; 飛び道具ヘルパー呼び出し
type = Helper ;ステコン定義分
trigger1 = AnimElem = 2,1 ;トリガー(アニメが2枚目の1フレーム目になったら有効)
name = "CrossMore" ;ヘルパーのデバッグ表示上の名前
stateno = 2050 ;ヘルパーのステート番号
ID = 2050 ;ヘルパーのID番号
size.xscale = 1 ;ヘルパーの横方向の表示倍率
size.yscale = 1 ;ヘルパーの縦方向の表示倍率
postype = p1 ;ヘルパーを表示する位置
ownpal = 1 ;独自パレット持ちますよ
pos = 0,0 ;表示位置を基準にした、登場する座標

;大体このへんが書いてあれば問題ないはず

[State 2000, 2]; ボイスとか
type = PlaySnd
<省略>

[State 2000, 3]; 動作終了
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

ここからヘルパー側ステート---------------------------------

[Statedef 2050] ; いつもの
type = A ;いつもの2
movetype = A ;いつもの3
physics = N ;S(地上)だと摩擦がかかる、A(空中)だとPosY>0の時に着地してしまうのでNが都合いい
velset = 0,0 ;速度指定
ctrl = 0 ;操作できませんってば
anim = 7220 ;アニメ番号。今回の場合はエフェクトの登録Air番ですかね
sprpriority = 3 ;表示優先度

[State 2050, 0]; 影を消す/ProjやExplodと違い、Helperは影有がデフォルトなので常時非表示にする
type = AssertSpecial
trigger1 = 1
flag = NoShadow

[State 2050, 1]; ヒット定義
type = Hitdef
trigger1 = Time = 0
;- - - - - - - - - - - - - - - -
attr = A,HP
priority = 7,Hit
numhits = 1
damage = 110
getpower = 0,0
givepower = 0,0
hitflag = HLAFD
guardflag = HL
;- - - - - - - - - - - - - - - -
animtype = hard
ground.type = low
air.fall = 1
fall.recover = 0
pausetime = 0,3
guard.pausetime = 0,0
ground.slidetime = 12
ground.hittime = 25
guard.ctrltime = 25
ground.velocity = -3,0
air.velocity = -1,-3
;- - - - - - - - - - - - - - - -
hitsound = s31,21
guardsound = s31,998
sparkno = -1
guard.sparkno = s6008+facing
sparkxy = 0,0

[State 2050, 2]; 効果音
type = PlaySnd
<省略>

[State 2050, 3]; 消滅処理
type = DestroySelf
trigger1 = AnimTime = 0 ;アニメが1週したら消去
trigger2 = Parent,StateNo != 2000 ;親(キャラ本体)がステ番2000以外に移ったら消去


大体こんな感じかな。
最後のトリガー2は「本体がやられモーションになった時に消去したい場合」という意味合いで記述してます。
血柱は構えさえできれば発生保証があったと思うのでなくてもいいかと。

で、消滅処理のトリガーですが、AnimTime = 0でも消えない場合は最後のアニメのAir表示時間が
-1だったりすると有効にならない場合があります。体験談ですが。
その場合は-1以外の数値を入れるか、別のトリガー(AnimElemで何枚目の
何フレーム目以降とか)で有効なやつを使うといいかも。

ちなみにHelperでステート0番にChangeStateというステコンを用いて消そうとしても、
「本体の分身」なのでステート0番(立ち状態)に移ってしまうだけです。
消去するステコンはDestroySelfを使いましょう。


<補足>
良く見たら私はHelper側のpausetimeは0で固定しちゃってますね。
「飛び道具ならアニメのヒットストップってなくてもいいんじゃないか」という考えからですが。
一応気になったので試してみましたが、Helper側のHitDefにあるpausetimeを0→100にしたら
ちゃんとHelperのアニメがそこで停止したので、0以外でも機能するようです。

あと、Helper記述だと飛び道具同士の相殺をしてほしい時はちょっと面倒くさいです。
Helperにやられ判定をつけて攻撃判定が重なった場合、本体の分身たるせいで相殺ではなく
やられステートに飛んでしまうからです(=本体のやられアニメが表示されてしまう&その後に
ステート処理によって立ち状態へ移行するので、立ち状態のまま画面に居座ってしまう。俗に言う分身バグ)。
なので基本的にはやられ判定をつけない(攻撃判定のみ)方が無難です。

どうしても飛び道具相殺をしたい場合は、
1:ヘルパーにやられ判定を設定し、HitOverRideなどを用いて攻撃が当たったら消滅ステートに飛ばす
2:やられ判定のみのProjを発生させて、飛び道具の相殺を代わりに行わせる

この2つが手ごろですかね。
ただ(今回の血柱のように)複数ヒットする場合はヒット回数管理だとかアニメ表示管理とかあるので面倒です。
簡単なのは後者で、Helperが攻撃判定を発生させるタイミングで同一のやられ判定のみ設定したProj
(画像はなし、またはAssertSpecialで透明にする)を発生させる(表示フレーム数も1ヒット分に
合わせるのが無難、要は本体打撃に合わせてエフェクト分割で表示しましょうと同じ要領)、
ということをヒット数分だけ行うことですかね。

女レンの銃士でやってますが、複数ヒットして且つ同じ威力他の場合はトリガーを複数設置すると
その分だけ複数実行してくれたりします。例に出すと、

[State 2000, Ht]; 斬撃部分・ヒット定義
type = HitDef
trigger1 = AnimElem = 2,1 ;アニメ2枚目の1フレーム目
trigger2 = AnimElem = 3,1 ;アニメ3枚目の1フレーム目
trigger3 = AnimElem = 4,1 ;アニメ4枚目の1フレーム目
trigger4 = AnimElem = 5,1 ;以下略
trigger5 = AnimElem = 6,1
trigger6 = AnimElem = 7,1
trigger7 = AnimElem = 8,1
trigger8 = AnimElem = 9,1
trigger9 = AnimElem = 10,1
trigger10 = AnimElem = 11,1
trigger11 = AnimElem = 12,1
trigger12 = AnimElem = 13,1
;- - - - - - - - - - - - - - - -
attr = S,HA
priority = 7,Hit
numhits = 1
damage = 5
getpower = 0,0
givepower = 0,0
hitflag = HLAFD
guardflag = HL




という感じですね。上の例だと計12回分、上記のHitDefを実行してくれるので計12Hitします。
ヒット数分だけHitDef設置でもいいですが、手間があるのでこういうのもひとつの手段。
もちろん、clsn1はちゃんと個別設定(というかトリガーを満たす分だけ設置)しないとダメですが。