Profile

アメリ

Author:アメリ
キャラ紹介

line
カテゴリ
AIR (1)
Pos (1)
Var (1)
FAQ (1)
line
不許カウンター
line
最新記事
line
最新コメント
line
最新トラックバック
line
月別アーカイブ
line
sub_line
カレンダー
09 | 2017/10 | 11
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 - - - -
line
検索フォーム
line
リンク
line
RSSリンクの表示
line
QRコード
QR
line
ブロとも申請フォーム

この人とブロともになる

line
sub_line
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
line
・Hitdef
 当たった時の定義(hit define)です。Reversaldefで反撃されるのもHitdefです。また、Projの威力等の設定もHitdefのパラメーターを書いて行います。
 Hitdefを有効にする為には movetype = A である必要があり、最低でも2フレーム必要です(1フレームのステートだと次のステートがmovetype=Aでは無い事がある為)。Projctileの場合は関係ありませんがmovetype = Aにしておかないと攻撃中と言う事がわかりません。

・必要な事
 sff(画像をまとめた物)に画像の登録。
 air(アニメーション)の作成。ここで画像の指定、当たり判定(Clsn2)と攻撃判定(Clsn1)を作ります。
 cns(動作定義)の作成。新しく飛び道具を出すステートを作るのであれば[statedef 番号]を作成してtype =Hitdefで当たった時の設定をします。
 cmd(入力手順)の作成。[command]でコマンドを作って[statedef -1]より下にtype=ChangeStateを足して作ったステートに移動させます。

ここまでの作業が完了するとコマンド入力するとキャラクターが作ったステート(状態)に変わって(ChangeState)Hitdefが設定されて(type = Hitdef)アニメーションが終わる(AnimTime = 0)と立ち状態([statedef 0])に戻る(ChangeState、value=0)、と言う具合になります。手順さえわかれば後は実際に作るだけですね。


 Hitdefは様々な設定が出来ます。主に威力の設定、当たった時の設定、吹き飛びの設定です。大抵は初期値でも構いませんが後々の事を考えて次の値は必ず入れておきましょう。値は変更しても構いません。

fall.yvelocity = -4.5
yaccel = .35

 それでは各値を見ていきましょう。


・必須項目
 attr = 属性1, 属性2
攻撃属性で必須です。属性はS=立ち、C=しゃがみ、A=空中の状態とN=通常、S=特殊、H=超強いとA=打撃、T=投げ、P=飛び道具を合わせたのを設定します。

 attr = S, NA
 attr = S, NT
 attr = C, SA
 attr = A, SA

 こんな感じです。type = Hitdefの場合ではP=飛び道具の設定はしないのでAとTだけになります。
また、Reversaldefが可能な属性もAとTだけです。

 必須はこれだけです。

・type = Hitdef
 さてでは全パラメーターを見ていきましょう。数値が入っているのは省略時の初期値です。
数値が入っていない物はairだとgroundを参照する様に大抵が別の値を参照する形式になっています。
また、数値が入っていない物の中には不意に設定しない方が良い値もあります。

 細かい事はmugendocsState controller referenceをご覧下さい。
Ctrl+DデバッグモードにしてCtrl+Cを押して判定枠の表示を利用しましょう。

 セミコロンでコメントアウトしてある物は通常は不要です。声に出しながら一つずつ読んでみましょう。

type = Hitdef
attr = S, NA
hitflag = MAF
;guardflag =
affectteam = E

animtype = Light
;air.animtype =
;fall.animtype =
priority = 4
damage = 0, 0

pausetime = 0,0
;guard.pausetime =
sparkno = 5
;guard.sparkno =
sparkxy = 0,0
hitsound = 5,0
guardsound = 6,0

ground.type = High
;air.type =
ground.slidetime = 0
;guard.slidetime =
ground.hittime = 0
;guard.hittime =
air.hittime = 20
;guard.ctrltime =
guard.dist = 90
yaccel = .35

ground.velocity = 0
;guard.velocity =
air.velocity = 0,0
;airguard.velocity =

;ground.cornerpush.veloff =
;air.cornerpush.veloff =
;down.cornerpush.veloff =
;guard.cornerpush.veloff =
;airguard.cornerpush.veloff =
;airguard.ctrltime =

;air.juggle = 0
;mindist =
;maxdist =
;snap =

;p1sprpriority = 1
;p2sprpriority = 0
;p1facing =
;p1getp2facing = 0

;p2facing =
;p1stateno =
;p2stateno =
;p2getp1state =
;forcestand =

fall = 0
;fall.xvelocity =
fall.yvelocity = -4.5
;fall.recover = 1
;fall.recovertime = 4
;fall.damage = 0
;air.fall =
;forcenofall =

;down.velocity =
;down.hittime =
;down.bounce =

;id = 0
;chainID = 0
;nochainID = -1
;hitonce = 1
;kill = 1
;guard.kill = 1
;fall.kill = 1
;numhits = 1

;getpower = ,
;givepower = ,

;palfx.time =
;palfx.mul = ,,
;palfx.add = ,,

;envshake.time =
;envshake.freq =
;envshake.ampl =
;envshake.phase =
;fall.envshake.time =
;fall.envshake.freq =
;fall.envshake.ampl =
;fall.envshake.phase =


 凄い沢山ありますね。目眩がしそうですがProjの場合も同じように設定するのである程度は理解しておかないとメチャクチャになってしまいます。
 下の方はfallやshakeで通常は使わないので取り除くと綺麗になります。

type = Hitdef
attr = S, NA
hitflag = MAF
;guardflag =
affectteam = E

animtype = Light
;air.animtype =
;fall.animtype =
priority = 4
damage = 0, 0

pausetime = 0,0
;guard.pausetime =
sparkno = 5
;guard.sparkno =
sparkxy = 0,0
hitsound = 5,0
guardsound = 6,0

ground.type = High
;air.type =
ground.slidetime = 0
;guard.slidetime =
ground.hittime = 0
;guard.hittime =
air.hittime = 20
;guard.ctrltime =
guard.dist = 90
yaccel = .35

ground.velocity = 0
;guard.velocity =
air.velocity = 0,0
;airguard.velocity =

air.juggle = 0
fall = 0
;fall.xvelocity =
fall.yvelocity = -4.5

 この中で最初に変更する所と言えばpausetime、hittime、slidetimeでしょう、それとdamageをちょっと設定すれば攻撃の完成です。簡単な攻撃とは言え弄れる部分は多いです。基本的にgroundの値をair等が初期値とするので(補正がかかりますが)コメントアウトしてあって値が入っていない部分は入れなくても問題ありません。

 pausetimeは自分と相手が止まる時間、hittimeはpausetimeが終わった後に食らい状態で動く時間になります。pausetime+hittimeが相手が食らっている時間になります。guard系の時間も重要ですので計算してしっかり作りましょう。自キャラ同士でDisplayToClipboardを使ってstateno、hitpausetime、hitover辺りを表示させておきましょう、ignorehitpause=1をつけるのを忘れずに。

 Hitflagとguardflag、それにguard.distは重要です。guardflagとguard.distは変に設定するとガードできない攻撃になるので注意しましょう。設置系の攻撃の場合はguard.distが長すぎると相手がずっとガードしてしまったりするので適度な値にしましょう。statetypeとHitflagは揃えましょう。

 自分の作ったsparkやsoundを使う場合は数字の前にSをつけます。別のステートコントローラーに逆の物もあったような気がしますが・・。

 もしも上手くいかないのであれば次の部分を確認しましょう。

・アニメーションに攻撃判定がついているか。Clsn1
・[statedef ]で movetype = A になっているか(デバッグだとmovetype=1)。
・有効なTimeで実行しているか(アニメーションのTime以内かどうか)。
・Hitdefを実行した直後に movetype = A 以外になっていないか、実行直後に他のステートに移動したりしていないか。

 こんな所でしょうか。trigger1 = 1の様な条件にすると1フレーム毎に攻撃が更新されるので何回も当たってしまいます。一度実行したら movetype = A である間は有効なので一回だけ実行する様にしましょう。

・affectteam
 affectteamは攻撃対象を指定します。E, B, F (enemy 敵, both 双方, friend 味方)です。特にヘルパーから自分に当てる場合は projectile では無い必要があります。partner にも当たります。指定しない場合は affectteam = E になります。

・air.juggle
 air.juggle値は空中で当たった際に際限なく当たらない様にする為の値です。初期値は0です。
空中でのHit時に加算されて(多分 statetype = A)キャラクター設定の[data]辺りにあるjuggle=15と言うのを越える場合に当たらなくなります。
永久コンボを防ぐならjuggle最大値の半分以上の値(最大15なら8)や最低でも1を設定しておけば大丈夫だと思います。

・target
 ターゲットは攻撃を当てたままの状態(movetype = A)で相手が movetype = H の時に取得できます。
但し、当てた瞬間は相手の状態に因らず取得できます。Reversaldefはそのままの状態であれば相手の状態に因らず取得できます。
 NumTargetを使ってターゲットが居るか確認してから使いましょう。

trigger1 = NumTarget != 0
trigger1 = target,stateno != 3002

 Redirectの項目を参照。

・hitdefpersist
 hitdefpersistは[statedef ]につける設定値で通常はステートが変わると途切れるHitdefを引継ぎ持続させるかどうかを設定できます。指定しない場合は hitdefpersist = 0 となりステートが変わった時点でhitdefの効果がなくなります。


スポンサーサイト
line
line

line
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。