Contents
Wiki内検索
最近更新したページ
最新コメント
タグ

●●●リョナ技の記述を注釈ありで読み解く●●●

記述に関しては、何も知らない上で質問すると、『MUGEN小中学校見てこい』で済まされてしまうことが多いです。
ですが、右も左もわからない、記述を読むことに慣れていない方にはそれすら酷で、挫折ポイントです。(筆者が以前そうでした)
そのため、改変の際に絶対触れ合わないといけないリョナ技を題材に、記述の意味を読み解いてみます。


この記事を読んで、もっとしっかり知りたいと思えたら、もう『MUGEN中学校』辺りでも躓きませんし、
記述の単語で検索をかければ一気に身についていくと思います。

この内容で厳しい場合は、一応リョナ技を追加する記事も作成予定なので、そこを参考にしてください。
導入しながらの方が覚えやすいですが、知識としてまとめておくに越したことはないため、記事を分けて作成しています。

最初の一歩の手助けの記事なので、かなり大雑把な解読になっていたり、最低限の記述だけ紹介しています。ご了承ください。

また、決定的に間違っている部分がありましたら、ご連絡ください。

※20/09/07に一部追記

●●●1、バーディの後背位の記述を、注釈ありで読み解く(バーディ側)●●●
使用するキャラクター
  • mugeryona2376』より『0D_Birdie

見ていく記述『後背位(11000番)』
…『Birdie-N2.cns』で『11000』を検索したところから見ていきます。



[Statedef 11000,];★必須 動作記述の一番最初にくる。
type = S    …技の状態。立ち状態で出す時はtype= 『S』。
movetype = A  …動作の状態。『A』は攻撃技。
physics = N  …重力や摩擦がかかるかの判定。空中攻撃以外は基本『N
velset = 0,0  …動作の初速、つまり移動技の最初の速度を決める。突撃技などで弄る場所。
anim = 11000  …動作のアニメ番号を設定する。アニメ番号を確かめる時は、基本ここを見る
ctrl = 0    …キー入力が可能になるか否か。基本は『0
sprpriority = 1 …画像の優先度。おそらくryona技的には一番気をつける部分。『最低値−5、最大値5』の数値の中で大きい数の画像が、上に表示される。
         この順番がおかしくなると表示が変になるので、この値をしっかり覚えておく。



[State 11000];手▲必要な時が多い。
type = Explod …アニメを上に置く記述。今回は腕をキャラの上に表示する、
trigger1 = time = 5 …triggerは条件、複数の条件がある場合もあるが、今回は一つだけ。
           timeは本体(アニメ11000)の開始からの秒数。他にもanimelemがある(意味は後述)
anim = 11009    …動作のアニメ番号
ID = 11009     …このexplodに処理を行うために使う目印。基本的にはアニメ番号と同じ数字を入れる。なくてもいいが、あった方がいい、という記述。
postype = p1    …このアニメを表示する位置。本体のアニメ付近に表示させるのであれば、基本は『p1』
pos = 0,0     …このアニメを表示させる際の↑で決めた位置を基準に、ここの数値分動く。
sprpriority = 4  …画像の優先度。バックの腕は受けキャラよりも上に置きたいので、可能な限り大きな数値にしておく。
removetime = -2  …消滅するまでの時間を設定する。-2はアニメが終了すると消える。大体は『−2』

[State 11002, ];★ロック技はつけておいた方がいい。(リョナ技はほとんどロック技ではありますが)
type = NotHitBy …攻撃に当たらない時間を設定する。設置などでダメージを受けると変になるので、ここで無敵にしておく。
trigger1 = Time >= 0 …time>=0 は開始直後、という形で読んで構わない。
value = SCA,NA,SA,HA,NT,ST,HT …valueは種類を書く場所。通常攻撃、必殺技、などの意味があり、完全無敵の場合はここをそのまま使わせてもらう方がよい。

[State 6061];★ロック技は必須。これがないと相手キャラを固定できない。
type = TargetState …相手キャラを指定した番号へ飛ばす。この番号はアニメ番号ではなく、state番号。
trigger1 = time = 0
value = 11001 …State番号『11001』に相手キャラを飛ばす。この『11001』に相手のバックの時の行動記述が記載されている。

[State 11002];★ほぼ必須。音声の記述のため、必然的にここが多くなる。
type = PlaySnd …音声を鳴らす。
trigger1 = AnimElem = 2 …animelemは本体(アニメ11000)のコマ数。SAEでは確認が容易なため、開始直後の『time=0』以外はanimelemが使いやすい。
value = 1000, 2 …sndファイルの音声番号を書く場所。sndファイルの中身はSAEで確認出来る。


[State 11002]
type = PlaySnd
trigger1 = AnimElem = 12 || AnimElem = 18 || AnimElem = 24 || AnimElem = 30 || AnimElem = 36
trigger2 = AnimElem = 42 || AnimElem = 48 || AnimElem = 54 || AnimElem = 60
trigger3 = AnimElem = 64 || AnimElem = 70 || AnimElem = 76 || AnimElem = 82
trigger4 = AnimElem = 88 || AnimElem = 94 || AnimElem = 100 || AnimElem = 106
trigger5 = AnimElem = 112 || AnimElem = 118 || AnimElem = 124 || AnimElem = 130
trigger6 = AnimElem = 136
value = 6, 1

↑animelem=○のあとに『 || 』を挟み、再びanimelemを書くことで、同じ行に鳴らすタイミングを続けて書ける。
 ただし、1行には文字数制限があるため、4つくらいで抑えた方がいい。
 
 その場合に役に立つのが、『trigger2』これは〜〜の条件の時、の2種類目。trigger1の条件とは別の条件を設定したい時に、trigger2とtriggerの数を増やします。
 このように1カ所に固められるのは、すべて同じ音声『6,1』を鳴らすからです。

 『6,1』を鳴らす記述を毎回毎回一つずつ書いていると、凄まじい量になるので、こうやって1カ所にできるだけ集めて見やすくします。

〜〜〜playsndだけなので中略〜〜〜


[State 4614, Explod];●精液
type = Explod
trigger1 = AnimElem = 12 || AnimElem = 18 || AnimElem = 24 || AnimElem = 30 || AnimElem = 36
trigger2 = AnimElem = 42 || AnimElem = 48 || AnimElem = 54 || AnimElem = 60
trigger3 = AnimElem = 64 || AnimElem = 70 || AnimElem = 76 || AnimElem = 82
trigger4 = AnimElem = 88 || AnimElem = 94 || AnimElem = 100 || AnimElem = 106
trigger5 = AnimElem = 112 || AnimElem = 118 || AnimElem = 124 || AnimElem = 130
trigger6 = AnimElem = 136
anim = 12000
ID = 12000
pos = -15, -25
postype = p1
scale = 1, 1 …画像の大きさ。何も書いていない場合は『1,1』で、ここの数値を弄ることで拡大したり縮小したり出来る。
sprpriority = -1 …-1なのでほぼ後ろ。
ontop = 0 …↑で設定する優先順位の特例。ここが1の場合、↑の優先順位に関係なく『一番上』に表示される。0だと関係なし。
removetime = 3 …1以上の数字の場合、表示するフレーム数となる。つまり、このアニメは3フレームだけ表示される。


[State 11002];★これがないと、当てた位置で相手キャラの位置が変わるため、必須。
type = BindToTarget …相手を基準にプレイヤーの位置を固定。
trigger1 = Time >= 0
id = -1 …ターゲットの番号、ここだと相手のどれかの意味。省略可能。
pos = 0, 0,food …foodは相手の基準位置から、という意味で基準位置から座標位置をどれくらい動かすか、という記述。

〜〜〜〜〜〜〜〜〜〜↑の別形(筆者がよく使う形)
[State 810, 掴んだ相手の位置1];★自分はこっちの方がわかりやすいが、複数相手だと変な巻き込み方をするため、ソロ用
type = TargetBind …自分を基準に相手の位置を固定。
trigger1 = time = 0
pos = 0, 0 …ここを弄らず、直接画像の座標を動かした方がいいため、『0,0』推奨
〜〜〜〜〜〜〜〜〜〜



[State 11002,];まんぐりやられあり×記述上、ここはなくても動くが、エラー回避のためにあると思われる(すみません、後々の記述的に抜いてもいい気はします)
type = TargetState …
triggerall = var(28) = 1
trigger1 = AnimTime = 0
value = 11002

[State 11002,];まんぐりやられあり★必須。これがないと自分が一生終わらない。
type = ChangeState …自分のstate番号を変化させる記述。基本的には1つの記述の終わりにある。
triggerall = var(28) = 1 …triggerAllは条件が複数ある場合、これだけは全部共通した条件! というものがある場合に使う。ただし、allだけでなく、1がないとエラーが発生する
              var(28)=1の時、というのは変数であり、ここが最初の壁になることも多い。とりあえず今は、相手にまんぐりやられがあるのが条件と読む。
trigger1 = AnimTime = 0 …『AnimTime=0』で『アニメが終わった時』という意味になる。分岐などがない場合は、changestateは基本的にこれを使う。
value = 11100 …自分がstate『11100』に跳ぶ。(次のまんぐりへ)

[State 11002,];まんぐりやられなし★必須。これがないと相手が一生終わらない
type = TargetState …相手を指定のStateに飛ばす。この指定のStateの記述はBirdieの中に書いてあります。(初心者が間違えがち)
triggerall = var(28) = 0 …訳、相手にまんぐりやられがない場合
trigger1 = AnimTime = 0
value = 11112 …相手がState『11112』に跳ぶ(解放されて倒れるアニメに繋がっている)

[State 11002,];まんぐりやられなし★必須。これがないと自分が一生終わらない。
type = ChangeState …↑にもあるがこれはvar(28)=0の場合に分岐する記述。
triggerall = var(28) = 0
trigger1 = AnimTime = 0
value = 0 …0番に跳ぶ、つまりニュートラルの立ち状態に戻るということです。
ctrl = 1 …すぐに操作可能にするための記述


※[Statedef○○○]の番号はState番号といい、○○○Stateというtypeで指定される番号はこの番号になる。
 Defがついていない部分の番号は基本目印のため、最悪適当でもいい。(何かないとダメ)

※posなど座標系の数値を示す記述で、『0,0』などの場合、基本的に左はx座標値、右がy座標値。xは+がキャラ正面、−は後方。yは+が↓、−が↑。
 その他はその都度説明予定

※ここまでの記述のsprpriorityの順番は
腕(4)>本体(1)>精液(-1)

となっています。これらの数値関係を考えながら、相手キャラの数値がどうなっているかを次は見てみましょう。




今回、バーディの記述だけを見ていきました。かなりスリムで基本的に必須な記述だけで構成されており、
技の記述を書く際はこれを土台にしてもいいと思います。(私は基本これくらいの種類ばかりです)

記述の中にTargetStateとあったように、相手側の記述まで含めて完成するのですが、少々長くなるため相手側の記述は今度行います。




基本的に使う記述の構成まとめ

[Statedef 11000,];★本体最初の記述、状態やアニメ番号を設定
type = S
movetype = A
physics = N
velset = 0,0
anim = 11000
ctrl = 0
sprpriority = 1


[State 11002, ];★無敵をつける
type = NotHitBy
trigger1 = Time >= 0
value = SCA,NA,SA,HA,NT,ST,HT


[State 6061];★相手を指定の番号に飛ばす
type = TargetState
trigger1 = time = 0
value = 11001

[State 11002];★相手の位置を固定、『TargetBind』とどちらか片方
type = BindToTarget
trigger1 = Time >= 0
id = -1
pos = 0, 0,food

[State 810, 掴んだ相手の位置1];★相手の位置を固定『BindtoTarget』とどちらか片方
type = TargetBind
trigger1 = time = 0
pos = 0, 0

[State 11000];▲本体とは別にアニメを表示させる
type = Explod
trigger1 = time = 5
anim = 11009
ID = 11009
postype = p1
pos = 0,0
sprpriority = 4
removetime = -2


[State 11002];★音を鳴らす
type = PlaySnd
trigger1 = AnimElem = 2
value = 1000, 2


[State 11002,];★相手を解放する
type = TargetState
triggerall = var(28) = 0
trigger1 = AnimTime = 0
value = 11112;★ここの番号はバーディ固有の番号のため、普通に使うなら5150あたり。

[State 11002,];★自分を自由に動けるようにする。
type = ChangeState
triggerall = var(28) = 0
trigger1 = AnimTime = 0
value = 0
ctrl = 1



この形さえあれば、基本は動くため、骨組みとして覚えておくといいと思います。

次回>>●●●2、バーディの後背位の記述を、注釈ありで読み解く(相手側)●●●
2020年09月07日(月) 19:46:39 Modified by ID:ax/Hl6A81Q




スマートフォン版で見る