Profile

アメリ

Author:アメリ
キャラ紹介

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

この人とブロともになる

line
sub_line
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
line
Projectile 飛び道具

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

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

下は飛び道具を出すステートの雛形です。
 細かい事はmugendocsState controller referenceをご覧下さい。
Ctrl+DデバッグモードにしてCtrl+Cを押して判定枠の表示を利用しましょう。

;------------------------------------------------------------
;Projectile
[Statedef 1500]
type = S
movetype = A
physics = S
anim = 0
ctrl = 0
juggle = 4
poweradd = 0
velset = 0,0
sprpriority = 1

[State 1500]
type = Projectile
triggerall = NumProjID(1500) = 0
trigger1 = Time = 0;        AnimElemTime(1) = 0
attr = S, SP
damage = 10,1
numhits = 1
animtype = Hard
pausetime = 0,10

offset = 0,0
velocity = 2,0
accel = 0.1,0.1
projID = 1500
projanim = 1501
projhitanim = 1502
projremanim = 1503
projscale = 0.30,0.30
projshadow = 255,255,255
projhits = 1
projmisstime = 1
projpriority = 3
projedgebound = 30
projheightbound = -600,30
projremove = 1
projremovetime = 60

guardflag = MA
priority = 3
sparkno = 0
sparkxy = 0,0
guard.sparkno = 40
hitsound = 5,0
guardsound = 6,0
ground.type = High
ground.slidetime = 3
ground.hittime = 4
ground.velocity = -1,0
air.velocity = -2,-1
air.juggle = 4

[state 1500, ChangeState]
type = ChangeState
trigger1 = AnimTime = 0
value = 0

;------------------------------------------------------------

 これとprojのアニメを作ってください。最初は○、□、×みたいな簡単な図形で構いません。これなら動作確認がすぐ出来ます。40x40位でどうでしょうか。Tileが当たるだけなら3つ同じアニメ番号でも構いません。
projanim = 1501
projhitanim = 1502
projremanim = 1503

 上から出現している状態、当たった状態、当たり終えたり画面外や時間切れで消える場合です。攻撃判定の赤い当たり判定が無いと当たりません。相打ちさせるには青い当たり判定を作ってください。判定枠を見たい場合はmugen.cfgで設定するとCtrl+Dでデバッグモードに出来ます。
当たり判定については中学校で習ったと思いますが丸い物体の判定なら四角いのを○に収まる様に置くと良いです。横幅がありすぎると飛び越せないので横長の場合は後方の判定を短めにすると言うのが一般的です。
 ステートコントローラーprojectileの中にはhitdefの設定ととprojectileの設定をします。動いて当たって消える、と言う具合です。
 offset、velocity、accelで動きを設定します。x,y=(velocity+accel*Time)*Time+offsetと言う所で二次式になります。直線か放物線の軌跡しか設定できません。よって、前方に動いて止まっての繰り返しと言う様な動きは出来ません。
 プレイヤーの立ち位置(中心足下)が基準で横は前方が正の方向、縦は画面の上方向が負の方向です。remove,boundを設定しておかないと画面外にいっても消えずに無駄な物体になります。省略した場合の値はdocsに全て書いてあります。これ以外にもfallやshake等が設定できますので見てみてください。


・複雑な動き
 さて、要は止まっているか動いているかしか設定できないわけですがアニメーションはどんな風にも作れますよね。これを利用すると止まってまた動く様な動きも当然出来ます。回転は出来ませんが回転させた絵を登録しておけば回転させる必要もありませんね。
 こうなると出来ないのは追尾位でしょうか。果たしてそうでしょうか。今居る位置に対して飛んでいくだけならvelをちょっと設定すれば出来そうですね。発射した場所から動かないアニメを作って表示時間でp2distを割れば良いですね。xとyについて行えば直線的な誘導は出来そうですね。yの代わりにaccelを追加すれば加速させて命中させる事も出来そうですね。そうなると何が出来ないのでしょうか。
 Projectileは飛び道具を出すだけなので相手を投げたりする事は出来ませんし、相手を押し出したりも出来ませんし、加速度は一定にしかできないので相手の位置に合わせて加速させた場合には綺麗に止まる事は出来ません。ある程度複雑な動きは上記の組み合わせで出来ますが、初期設定以上の事は出来ないのでキャラクターの様に場面に合わせた動きは出来ないのです。お助けキャラの様な物でも「途中で食らったら帰る」様なので無ければ作れたりはします。何でも良いから当たったら帰る程度なら作れますけど。

と言うわけで無理な物についてはHelperを使うしかないのですが、Helperは(ゲーム全体で)最大数が56しかないのとChangeState、Hitooverride、DestroySelfさせないといけないのでちょっと面倒です。Projctileなら何百と出しても大丈夫(エラー落ちしたりはしますが)なので表示制限は無いと思って良いですね。

Projectile

ペイントで作りました(笑
スポンサーサイト
line
line

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