忍者ブログ
なんかもういろいろ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

当身です

当身、欲しいですよね、当身
当身技は魅惑の技ですね

当身技について先に説明しておきましょう

当身技モーション発動中に相手の攻撃を受ける事で
攻撃が発生する技、それが当身技です
カウンターだと理解するのが早いですかね

相手の攻撃を読まないと発動しない
つまり、連続技に組み込めないという欠点や
タイミングが外れれば無防備になってしまうというリスクがある為
投げ技よりもリスクが高いとも言えますが
その性質上、とても魅力的な技ですよね

さて今回は、当身について軽く触れます
当身のプロセスから簡単に考えてみましょう

まずは一番簡単な「打撃判定が出る当身技」から

コマンド入力→当身モーション開始→相手の攻撃がヒット→当身発動

こうですね

これだけなら大して難しい事はありません
当身モーション開始、の部分までは、通常の必殺技と変わりませんからね

当身には、hitoverrideという命令を使います
reversaldefは使いません

この命令に対する誤解が結構あるようなので
少しこの二つについて説明します

hitoverrideとは

操作キャラに相手の攻撃が当たった時に発動する命令です

reversaldefとは

操作キャラの攻撃判定と相手キャラの攻撃判定がぶつかった時に発動する命令です

つまり

hitoverrideはクロスカウンターのような時に
防御的に使います

reversaldefは拳と拳がぶつかるような時に
相殺であり、攻撃的に使う物で、もっと言うならhitdefがあるステートで無いと意味がありません

では

type = HitOverride
trigger1 = 1            ;このトリガーの場合「ステート中は常に」ですね、技の後に隙が欲しいなら time = 0などで指定しましょう
attr = S,AA            ;どんな技を取るか、です、この場合(相手の)「S(立ち状態)のAA(全ての打撃)」です
slot = 1                ;スロットです、条件を増やしたい場合に使用します(ワタクシは使った事無いです)
stateno = 0            ;攻撃を受けた時に飛ばすステートです
time = 1                ;当身受付時間です
forceair = 0           ;これを1にすると、食らった時に自キャラがふっとびモーションになります

こんなんです、注釈も付けてみました

上のhitoverrideは

・ステートが始まってから常に(・trigger1 = 1  ・time=1)
・立ち状態の全ての打撃を受け付ける(・attr = S,AA)
・上記の打撃を受けたならステート0に移動する(・stateno = 0)


ここでは仮にhitoverrideをつけたステートをstatedef1000
攻撃判定のステートをstatedef1001とします

~レシピ~

[statedef 1000]
type    = S
movetype= H   ;当身でもダメージを受けたい時はHを、受けたくない時はIを使いましょう
physics = S
juggle  = 1
ctrl = 0
anim = ??

[State 1000,1]
type = HitOverride
trigger1 = time = 0
attr = SC,AA  ;*
slot = 1
stateno = 1001
time = 30
forceair = 0

[State 1000,2]
type = changestate
trigger1 = time = 60
value = 0
ctrl = 1

これで
・相手の攻撃を受けるとダメージを受ける
・立ち、しゃがみの全ての打撃技を取れる
・開始30フレームの間は当身受付時間
・当身受付時間中に攻撃を受けた時statedef1001に飛ぶ
・残り30フレームは無防備
・60フレームで立ち状態に戻る

という状態です

*このattrには、○△□,●▲,●▲,●▲、という風に組み合わせて指定出来ます
最初の○△□は、SCAのいずれか、もしくは全部を指定出来ます、S=立ち、C=しゃがみ、A=ジャンプ、です
次の●は、A=「すべての」、N=「通常の」、S=「必殺技の」、H=「超必殺技の」、で
次の▲は、A=「打撃」、P=「飛び道具」、T=「投げ」です

上記のSC,AA 、というのは 「立ち・しゃがみ」、「すべての・打撃」 となりますね
SCA,AA,AP,AT、という指定も出来ます、これは、「立ち・しゃがみ・ジャンプ」、「全ての・打撃」、「全ての・飛び道具」、「全ての・投げ」、です
もう一例出すと
SA,NA,SP,AT、ならば、「立ち・ジャンプ」、「通常の・打撃」、「必殺技の・飛び道具」、「すべての・投げ」 となります

更に後ろにある

statedef1001は、例えば

[statedef 1001]
type    = S
movetype= A
physics = S
juggle  = 1
ctrl = 0
anim = ??

[State 1001,1];無敵でいいですよね
type = NotHitBy;無敵を指定する命令です
trigger1 = time = 0
value = SCA,AA,AP,AT
time = 60

[State 1001,2];確実性を増す為に時間停止も
type = Pause
trigger1 = time = 0
time = 30
movetime = 30

[State 1001,3]
type = hitdef;これは流石に略しますよ
(略)

[State 1001,4];さらにガード不可
type = AssertSpecial
trigger1 = 1
flag = unguardable

[State 1000,2]
type = changestate
trigger1 = time = 60
value = 0
ctrl = 1

こんな感じですか


さて、こうしちゃ駄目だよってミスを含めて書きますね

hitoverrideですが
まず、ここでtriggerが1になっているのに
timeを30とかにしちゃうとどうなるか

triggerは「ステート中常に」なのに30フレームも当身受付が続くと
当身ステートが終わってから29フレームも当身受付が続きます
「当身モーションが終わったのに当身を取っちゃった」とかいう不具合が起きます

また、見てて気付いた人も居ると思いますが
スーパーアーマーにも使えます
ガードポイントにするにはもう一工夫必要ですが
突進するスーパーアーマーを作りたいなら

hitoverrideで同じステート、この場合は1000に再度飛ばす訳です
そうすると、ダメージを受けたら1000に戻る訳です

ただ、こうすると、ダメージを受けると戻る、受けると戻る、で
えんえん食らっちゃうので

varを使って一定時間で強制移行するようにしちゃいましょう
-2stateを使うのが一般的ですかね

[state -2]
type = changestate
trigger1 = stateno = 1000
trigger1 = var(?) = 60   ;?には使ってないvar数値を
value = 1001

[state -2]
type = varadd
trigger1 = stateno = 1000
var(?) = 1

それと、statedef1000に
[state 1000,3]
type = varadd
trigger1 = time = 0
var(?) = 5

statedef1001に
[state 1000,5]
type = varset
trigger1 = time = 0
var(?) = 0

varをリセットしてます
こうしてれば、60フレームの時点で強制的に技に移行します

あ、これだと当身技にはなりませんから気をつけて

ここから更に当身に派生するようなら
もうちょっと凝る必要がありますね


hitoverrideを使った当身の作り方を書きましたが
それに対する補足やアーマーについての説明をば

さらにhitoverrideについて補足しますと

両者がhitoverrideとp2statenoのどちらかを持っている場合、その攻撃は無効になります

これは何故なのかというと、hitoverrideもp2statenoも
一般的には投げの属性に近いのです

投げと投げが同時に発生した時、両方を処理する事は出来ませんよね?
なので、この場合は無効になっちゃうのです

見た目ではそうじゃないですけど、内部的には投げと投げがぶつかった状態に近いのです

投げ外しはどうするのか?という疑問もあると思いますが、これはまた今度

当身を破るにはhitdefの代わりにprojectileを使うのが普通なんでしょうけど
hitdefにAPが入ってれば破れません

じゃぁどうするかというと、ここでtargetstateという命令を使います
これもp2statenoに近い命令なんですが
hitoverrideに干渉されないという特性があります

でもこれだけじゃ駄目なんですね
うっかりヘルパーの飛び道具とかストライカーに当てると
消えない分身が出ちゃいますから

当て身攻撃を破る、スト3のスーパーアーツなどと同じタイプの超必や
単純に当身状態を投げたいって場合なら
こんな構文になります、これをhitdefがあるステートに突っ込めばよいでしょう

[state ???]
type = targetstate
trigger1 = movehit = 1
trigger1 = !ishelper
value = ???

勿論やられステートを作らないと駄目ですよ
やられステートは、当身後に出る攻撃をガード不能にして時間停止を長めに作れば
即座にステート0に飛ばしちゃっても良いです

それと前に書いてなかったんですが
attrにSCAを使うとちゃんと作用してくれません

全部入れたかったらslotを増やしましょう

拍手[5回]

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
最新記事
(04/22)
(04/17)
(04/01)
(03/19)
(11/05)
ブログ内検索
最新コメント
[11/26 ななし]
最新トラックバック
プロフィール
HN:
カス
HP:
自己紹介:
臨海のハチャメチャファイター、ご飯を食べてウンコに変える錬金術師、絵とか描く
アクセス解析
カンダタ

Copyright © [ 描く打ち ] All rights reserved.
Special Template : 忍者ブログ de テンプレート
Special Thanks : 忍者ブログ
Commercial message : [PR]