[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
飛び道具には沢山種類がありますが
今回は、本体から射出される固体系
つまり波動拳のタイプと
レーザー系で行ってみましょう
まずは波動拳タイプから
必要な物は
・飛び道具を撃つ本体の画像
・飛んでいる飛び道具の画像
・当たった時の画像
ですね
それを作った上で
今回使う命令、かつ重要なのは
helper
destroyself
です
他にも作る方法はいっぱいありますけど
一番簡単な方法で
helper : ヘルパーを呼び出す為の命令です
destroyself : ヘルパーを消す為の命令です
では組んでみます
仮に、前述した飛び道具を撃つ画像を1000番
飛び道具自体の画像を1010番
飛び道具が消える画像を1020番に登録したとして話を進めます
;まずは飛び道具を打ち出すステートから
[Statedef 1000]
type = S
movetype = A
physics = S
anim = 1000
[State 1000]
type = Helper
trigger1 = time = 10
helpertype = normal ;ここをplayerにすると画面から出られないヘルパーになります
name = "tobidougu";適当で良いですけど分かりやすい名前を付けましょう
ID = 1010
stateno = 1010;飛び道具のステートナンバーです
pos = 0,-40;射出される位置を指定します x,y の並びになってますxは正数で前方、yは正数で下方向になります
postype = p1;どこを基準にposを指定するかを決めています、この場合プレイヤー1ですね
facing = 1
supermovetime = 0
pausemovetime = 0
[State 1000,1]
type = changestate
trigger1 = time = 30
value = 10
ctrl = 1
これで10フレーム目にステート1010番のヘルパーが出現します
ここまでの内容は
・本体が1000番のアニメ
・ステート1010番を、技が始まって10フレーム目に
Xが0、Yがー40の位置に出現させる
・30フレームで通常モーションに戻る
;次、飛び道具自体のステートです
[Statedef 1010]
type = A
movetype = A
velset = 4,0;速度の指定ですよ
physics = N;ここをNにしとかないと摩擦で止まっちゃいますし、高い位置で出現すると落ちてきます
anim = 1010
[State 1010,1]
type = hitdef
(略)
;ここでhitoverrideを仕込みます、当身されない様にというのが一つ
;誤作動を減らす為ってのも一つ、また、相手の打撃や飛び道具に触れると
;消えるって場合の為ですね
[State 1010,2]
type = hitoverride
trigger1 = 1
attr = SCA,AA,AP,AT
stateno = 1020;消滅用のステートです
time = 1
[State 1010,2]
type = changestate
trigger1 = movecontact = 1;飛び道具が相手に触れた時、というトリガーです
trigger2 = frontedgebodydist < -10;正面の画面端を10ドット通り過ぎた時、というトリガーです
value = 1020;消滅用ステートですね
;この他、timeのトリガーを使って時間で消したりなんか出来ますね
;さて、次は消滅用のステートです
[Statedef 1020]
type = A
movetype = I
velset = 0,0;止めます
physics = N
anim = 1020
[State 1020]
type = destroyself
trigger1 = animtime = 0;アニメーションが終わった時、というトリガーです
はい、以上で完成ですね
見て分かったかもしれませんが
これでストライカーも作れます
ストライカーはもうちょっと複雑で、これの上位版ですね
ストライカーについてはまた後日書く事にして
次はレーザータイプです
まず、レーザータイプの場合
画面端まで貫通する訳ですから、相手に当たっても消えません
今回は消滅用には、レーザーの根っこが通り過ぎる絵を用意しましょう
さて、最初の射出するステートは同じです、問題は
レーザー用のステートですね
元の1010番とどう違うかを見てみましょう
[Statedef 1010]
type = A
movetype = A
velset = 0,0;速度不要です
physics = N
anim = 1010
[State 1010,1]
type = hitdef
(略)、ですが
今回は
ground.cornerpush.veloff = 0
air.cornerpush.veloff = 0
down.cornerpush.veloff = 0
guard.cornerpush.veloff = 0
airguard.cornerpush.veloff = 0
これをhitdefに付け加えましょう
地上で、空中で、地上ガードで、空中ガードで
画面端で相手にガードされた時押し戻される速度を指定する命令です
これが無いと当てたらレーザーが押し戻されちゃいますよ
[State 1010,2]
type = hitoverride
trigger1 = 1
attr = SCA,AA,AP,AT
stateno = 1020;消滅用のステートです
time = 1
[State 1010,2]
type = changestate
trigger1 = time = 30;この場合、相手に当たって消える、とか、画面端で消える、とかは不要ですね
value = 1020;消滅用ステートですね
次の消滅ステートも同じでOKです
(絵は一緒じゃ駄目ですよ、念の為)
これでレーザーも完成です
当身とかに比べたら大分簡単ですよね
これを覚えれば、ストライカーの呼び出しも出来るようになります