空想曲線

吉里吉里2/KAG3でのゲーム制作に使える小ネタ置き場。ゲーム用素材も置いてます。

吉里吉里/KAG:アニメーション定義ファイル覚え書き  

2014-09-25[Thu]
cm0
tb0

自分用のメモ。
詳しいことは system フォルダの AnimationLayer.tjs を見ると幸せになれる。



セル方式アニメーション


ベースとなる画像にアニメ用のセル画像を重ねて動かす方式。
ベース画像とセル画像の2種類を準備する必要がある。
キャラクタの目パチや口パクに使用されることが多い。
個人的にはこちらのほうが使いやすいと思った。



セル方式のアニメーション定義ファイル例


ファイル名を「ベース画像のファイル名.asd」にしておくと自動で読み込む


; ベース画像の読み込み(ファイル名は省略可
@loadcell
; ループの宣言
@loop

; マクロを作っておく
; ウェイトの時間が固定ならマクロに入れておくとラク

@macro name=copyone
@copy dx=0 dy=0 sx=%x sy=0 sw=100 sh=100
@wait time = 50
@endmacro


; ここからセル画像の読み込み
*start
@copyone x=0
@copyone x=100
@copyone x=200
@copyone x=300
@copyone x=400
@copyone x=300
@copyone x=200
@copyone x=100


; セル画像の読み込みをループさせる
@jump target = *start



クリッピング方式アニメーション


画像のクリップ元の座標を変更して動いているように見せる方式。
アニメ用の画像を横に並べたものを1枚準備しておく必要がある。
クリップ幅と高さを変更できないのが難点といえば難点。
セル方式アニメーションとの同時使用も可能である。



クリッピング方式のアニメーション定義ファイル例


*start
@wait time = 50
@clip left=0 top=0
@wait time = 100
@clip left=100 top=0
@wait time = 50
@clip left=200 top=100

; ループさせる
@jump target = *start


この定義ファイルの名前は「hoge.asd」としておく。
アニメ用に「hoge.png」という画像ファイルを準備して
KAGシナリオファイルで次のように書けばアニメがスタートする。

[ img storage=hoge layer=0 clipleft=0 cliptop=0 clipwidth=100 clipheight=100 visible=1 ]

img ⇒ image と同じ。どちらを使ってもかまわない。
余談だが visible 属性は1と書いても true とみなしてくれる。false なら0。
ちょっとした小ネタだけど、スペルミスによるエラー防止に役立っている。



アニメーション定義に使用できるタグ


おおざっぱな説明でごめんなさいよ (ノ∀`)
属性をかいていないタグは「属性なし」です。


loadcell
属性:storage(省略可)
セル方式のみ。アニメーションに使用する画像を読み込む。
storage 属性が省略されたときは定義ファイルと同じ名前の
画像ファイル+_a を読み込んでくれる。


loop
セル方式のみ。 アニメーションのループを宣言するタグ。
ループさせたいときだけ書いておく。基本的には loadcell の後ろでおっけい。


copy
属性:dx, dy, sx, sy, sw, sh
セル方式のみ。読み込ませるセル画像の座標などを指定する。

 ・セル画像を貼り付けるベース画像の座標(dx,dy)
 ・読み込みたいセル画像の開始位置(sx,sy)
 ・読み込みたいセル画像の幅と高さ(sw,sh)

セル画像はタテヨコどちらにつなげても構わないが
ヨコにつなげたほうが画像の圧縮率は高い。


wait
属性:time (単位 ms)
指定した時間だけウェイトをとる。次のセル画像を読み込むまでの待ち時間。
ランダムがいいなら time="&intrandom(最短,最長)*1000" とかけば良い。


jump
属性:KAGと同じ
ループさせたいラベルへ飛ばせばアニメを繰り返してくれる。
あらかじめ loop で宣言しておくのを忘れずに。


s
アニメーションをループしない場合はこれで止める。
画像を読み込んだときにアニメーションさせたくない場合は
loadcell の後ろにこれを書いて停止させておく。


if~endif、eval、iscript~endscript
属性:KAGと同じ
使ったことがないので正直よくわかってない (´ε`;)
あー、eval と if~endif を使えばアニメの回数指定が出来るか。
この動きを3回ループしたら次のアクションに移る、みたいな。
iscript~endscript が使えるならわりと凝ったこともできそう。


home
セル方式のみ。animstop タグで指定したときに停止する場所。
これを書かないと animstop タグでは止まってくれない。
口パクアニメでセリフを言い終えたあとに止めるのに使ったり。


clip
属性:left, top
クリッピング方式のみ。image タグの clipleft, cliptop と同じ扱い。
クリッピングの幅と高さを変えることはできないので注意。
幅と高さを変えるアニメならセル方式で。



おまけ:一部のアニメーションだけループさせたい


もう少し賢いやりかたがあると思うけど、とりあえず。


*go
@loadcell
@loop

;
@macro name=copyone
@copy dx=0 dy=0 sx=%x sy=0 sw=100 sh=100
@wait time = 50
@endmacro

;
*start
@copyone x=0
@copyone x=100
@copyone x=200


*loop
@copyone x=300
@copyone x=400

;
@jump target=*loop


*start の中に書いている画像は1回だけ読み込んで、そのまま *loop へ。
*loop の中に書いてある画像は jump タグで好きなだけループ。

たとえば「画像が乱れたあと、砂嵐が延々と続く」といった演出を入れたいとき
画像が乱れるアニメを *start 以降に、砂嵐のアニメを *loop 以降に入れればOK。
eval, if~endif を使えば細かく指定できるので、そこら辺はお好みで。

複雑な動きを目指すなら動画を作って放り込んだほうが早いんだろうけど
吉里吉里のアニメーションも使いかた次第でまだまだ遊べそうな気がする。

というわけで、今回はこれにて (´∀`*)ノシ


関連記事

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kopacurve.blog33.fc2.com/tb.php/364-69e6882c
この記事にトラックバックする(FC2ブログユーザー)

現在のページ

Category

Link

Comment

Mailform

Author

Twitter