CNSの基礎〜通常攻撃を作ってみる



まずは、通常技をつくることで、基本的なことを覚えてもらおうと思います。

サンプルキャラのAthena_n.cnsをメモ帳などのテキストエディタで開いてください。
そして、[Statedef 300]をみてください。(エディタの文字検索機能を使うと探すのが楽です。)

ココが、偽アテナの立ち通常(弱)攻撃の記述となります。
[Statedef 300]の記述の範囲は、

[Statedef 300]の記述

上のような範囲となっております。
さて、 まずは記述の基本を押さえてもらおうと思います。
MUGENの記述は基本として、

[Statedef ???]
type = ???

anim = ???
   ・
   ・
   ・

というような記述で始まり、

[state -1]
type = ChangeState
trigger1 = Animtime = 0
value = 0
ctrl = 1

というような記述で終わることが多いです。

ラストの
ChangeStateはCMDファイルのところでやったので
意味はわかると思います。

trigger1 = Animtime = 0 このトリガーは初登場ですね。

このトリガーは、『アニメが終わった時、』というトリガーです。
今回の例の場合、アニメ番号300番([Begin Action 300])のアニメが全部表示され終わったら

ChangeStateが発動、という感じになります。

以上から、この記述は簡単にいうと、
『アニメが終わった時、[StateDef 0]に操作可能状態にしてChangeState(状態移行)する。』

という感じな意味になります。
ちなみに、[StateDef 0]は、コモン ステイト(基礎動作のステイト)の通常立ち状態に指定されています。

コモン ステイトに関して詳しく知りたい人はコチラへ。(特に知る必要はないと思います。)

[Statedef 0]
立ち状態

 

[Statedef 300]
通常立ち攻撃 発動

 

[Statedef 0]
立ち状態

;CMDファイル内の通常立ち攻撃の発動条件
[State -1]
type = ChangeState
value = 300
triggerall = command = "a"
trigger1 = statetype = S
trigger1 = ctrl = 1

;記述の最後のヤツ
[State 200 , 7]
type = ChangeState
trigger1 = Animtime = 0
Value = 0
ctrl = 1

流れとしては、こんな感じデスかね。感覚的につかめたでしょうか?
つかめませんかね?(苦笑) まぁ、だいたいわかってくれれば、OKなんで
次に進みましょう。(笑)


続いては、CNSの記述の読み方です。
ここは、
とても重要なのでよく覚えてください。


基本的にCNSの記述は以下のようになっています。 下の例を見てください。

[Statedef 300];@このステイトの初期状態情報。各項目は後に説明します。
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
ctrl = 0
anim = 300
poweradd = 100

[State 200 , 1];Aステイトコントロールの記述。内容については、後に説明します。
type = HitDef
trigger1 = time = 5
attr = S, NA
damage = 20
animtype = Light
getpower = 80,20
givepower = 80,20
guardflag = M
hitflag = MAF
priority = 3, Hit
pausetime = 7,8
numhits = 1
hitsound = 5,3
guardsound = 6,0
sparkno = 0
sparkxy = -10,-45
ground.type = High
ground.slidetime = 3
ground.hittime = 13
ground.velocity = -3
airguard.velocity = -1.9
air.velocity = -1.3,-3

[State 200 , 2];Aステイトコントロールの記述。内容については、後に説明します。
type = PlaySnd
trigger1 = Time = 1
value = s1, 5

[State 200 , 3];Aステイトコントロールの記述。内容については、後に説明します。
type = ChangeState
trigger1 = Time = 13
value = 0
ctrl = 1

@このステイトの初期状態情報。
Aステイトコントロールの記述。 
CNSの記述は、上のように2部構成となっています。読まれる順番は、@→Aの順です。

Aのステイトコントロールは、上のように、複数、記述されるのが普通です。
ココが重要なんですが、Aの読む順番には、約束事があります。

それは、『トリガー順に読んでいく』というものです。

上の例で説明したいと思います。

ちなみに、上の例で使われているトリガーのtimeは、
『ステイトに入ってからの時間が?フレームの時』というようなトリガーです。

例えば、
trigger1 = time = 5 ならば、

ステイトに入ってからの時間が5フレームの時に発動する、というように使われます。

ちょっと横道にそれましたね。(苦笑) 
本筋に戻りますが、さて、上の例では読まれる順番は、次のようになります。

[Statedef 300]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
ctrl = 0
anim = 300
poweradd = 100

[State 200 , 1];A二番目に読み込まれるコントロールです。       
type = HitDef
trigger1 = time = 5
attr = S, NA
damage = 20
animtype = Light
getpower = 80,20
givepower = 80,20
guardflag = M
hitflag = MAF
priority = 3, Hit
pausetime = 7,8
numhits = 1
hitsound = 5,3
guardsound = 6,0
sparkno = 0
sparkxy = -10,-45
ground.type = High
ground.slidetime = 3
ground.hittime = 13
ground.velocity = -3
airguard.velocity = -1.9
air.velocity = -1.3,-3

[State 200 , 2];@一番最初に読み込まれるコントロールです。
type = PlaySnd
trigger1 = Time = 1
value = s1, 5

[State 200 , 3];B三番目に読み込まれるコントロールです。
type = ChangeState
trigger1 = Time = 13
value = 0
ctrl = 1

このように、書かれてる順番どうりに読まれるのではなく、トリガー順に読まれるのが、CNSの記述の大きな特徴です。
書かれている順番は、あまり意味がないのです。(苦笑) とても重要なことなので、ぜひ覚えてください。

CNSの記述の読み方・補足


ついでに補足です。以下のような場合では、このようになります。

[Statedef 300]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
ctrl = 0
anim = 300
poweradd = 100

[State 200 , 1];@一番目に読み込まれるコントロールです。       
type = HitDef
trigger1 = time = 5
attr = S, NA
damage = 20
animtype = Light
getpower = 80,20
givepower = 80,20
guardflag = M
hitflag = MAF
priority = 3, Hit
pausetime = 7,8
numhits = 1
hitsound = 5,3
guardsound = 6,0
sparkno = 0
sparkxy = -10,-45
ground.type = High
ground.slidetime = 3
ground.hittime = 13
ground.velocity = -3
airguard.velocity = -1.9
air.velocity = -1.3,-3

[State 200 , 2];A二番最初に読み込まれるコントロールです。
type = PlaySnd
trigger1 = Time = 13
value = s1, 5

[State 200 , 3];B三番目に読み込まれるコントロールです。
type = ChangeState
trigger1 = Time = 13
value = 0
ctrl = 1

上のように、トリガーの条件が同じ場合のみ、上の方に書かれた記述から発動していきます。
頭のスミにでもいれておいてください。(笑)



さて、CNSの読み方は、わかって頂けたかと思います。今度は、
Statedef内の項目を詳しく説明して行きたいと思います。

偽アテナの立ち通常(弱)攻撃の記述を例にとって説明します。
上から順番に説明しますので参考にしてください。

[Statedef 300]
type = S
movetype = A
physics = S
juggle = 1
velset = 0,0
ctrl = 0
anim =300
poweradd = 10

この項目は、ステートの状態を指定する所です。
それぞれの項目をクリックすると、詳しい説明に飛びます。

できれば全部の項目を覚えてほしいところですが、
まぁ、完全に覚えなくてもよいです。(笑)
よくわからない人は、kfmの立ち攻撃関係の所をコピー&ペーストとかしちゃえばOKでしょう。(苦笑)


この項目で、とくに重要な項目だけ説明します。

movetype = A

AはAttackのAです。
攻撃なのにA以外のものに設定してしまうと、攻撃がHitしません。
絶対、攻撃技を作る時は、
movetype = A としましょう。

anim = ???

[BeginAction ???]のアニメを呼び出す、大事な記述です。
使いたいアニメ番号をいれましょう。



まぁ、こんなもんですかね。重要な点は。(笑)



ちなみに、コレを見ていただければわかると思いますが、
これ以外にも、ステートの状態を指定する項目はいろいろあります。
詳しく知りたい人は他人のCNSを覗いてみるのも良いと思います。

まぁ、だいたいのことは、上の項目で済みますので、あんまり研究する必要はないと思いますが。(苦笑)
では、次にいきましょう。


次の記述は攻撃の記述Hitdefです。トリガーが発動すると、Airファイルで作った、
攻撃判定の部分が攻撃となります。

[State 200 , 1]    
type = HitDef
trigger1 = time = 5
attr = S, NA
damage = 20
animtype = Light
getpower = 80,20
givepower = 80,20
guardflag = M
hitflag = MAF
priority = 3, Hit
pausetime = 7,8
numhits = 1
hitsound = 5,3
guardsound = 6,0
sparkno = 0
sparkxy = -10,-45
ground.type = High
ground.slidetime = 3
ground.hittime = 13
ground.velocity = -3
airguard.velocity = -1.9
air.velocity = -1.3,-3

それぞれの項目をクリックすると、詳しい説明に飛びます。
(注・ここに記述してあるパラメータは、あくまで一例です。もっと詳しい説明が必要な方は、
ステート図書館クリエイターズJAPAN2を参考にしましょう。(笑))


さて、では、このHitdefの重要なパラメータを説明します。

・・・う〜ん、全部重要だ。(笑)
まぁ、別に覚える必要はないと思います。
とりあえず、作る時は、参考にしたいキャラのをコピペでもして、
雛型にでもして、ステート図書館やクリエイターズJAPAN2などのHitdefの説明でも
見ながら、それっぽく調整しましょう。(笑)

さて、次の項目にいきましょう。(苦笑)

[State 200 , 2]
type = PlaySnd
trigger1 = Time = 1
value = s1, 5

とても重要なPlaysndのステイトコントローラーです。
まぁ、簡単にいうとSndファイルに登録したWavファイルを再生することが出来ます。
まぁ、見ての通りで特に説明するところはないのですが、
一応説明しときます。(苦笑)

value = s?,??の所に、Sndで登録した番号を入力して下さい。
基本的にコレだけでOKです。トリガーのタイミングでWavが再生されます。
value = s?,??のSさえ、忘れないようにすれば、得に問題ないと思います。

さて、最後の項目です。


[State 200 , 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

ココの項目は、以前やりましたね。
アニメが終了したら、[Statedef 0]
立ち状態
ctrl = 1 (コントロール可能状態)にして移動する記述です。

ココの項目を設定しないと、いつまでも、このステートから抜けられないという状態になってしまいます。
とりあえず、入れるようにしましょう。






MugenのCNSの記述は基本は、だいたいこんな感じです。では、実際に作ってみましょうか。
では、立ち通常攻撃の強を作ってみましょう。下の作成チャートを参考に自分で作ってみてください。(笑)


通常攻撃立ち強の作成チャート

作成チャート

SFFに画像を登録

Airでアニメの作成

MCMで当たり判定の追加

Sndファイルに音を登録

CNSの作成

CMDの作成

テストプレイ

エラーの修正、技の調整

完成

※項目をクリックすると詳しい説明が見れます。



こんな感じです。出来ましたか?では、続いて通常攻撃のしゃがみ強と通常攻撃の空中強を追加していきましょう。

通常攻撃しゃがみ強の作成チャート

作成チャート

SFFに画像を登録

Airでアニメの作成

MCMで当たり判定の追加

Sndファイルに音を登録

CNSの作成

CMDの作成

テストプレイ

エラーの修正、技の調整

完成

※項目をクリックすると詳しい説明が見れます。




通常攻撃空中強の作成チャート

作成チャート

SFFに画像を登録

Airでアニメの作成

MCMで当たり判定の追加

Sndファイルに音を登録

CNSの作成

CMDの作成

テストプレイ

エラーの修正、技の調整

完成

※項目をクリックすると詳しい説明が見れます。



こんな感じです。作成のコツは掴めましたかね?では、次に進んでいきましょう。



戻る