空想曲線

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

吉里吉里/KAG:moveタグのpathに変数を指定する  

2012-03-27
2017-06-16
cm0
tb0

吉里吉里/KAG ちょいネタ13回目。
move タグの path に変数を指定する方法です。

また、おまけ代わりに「レイヤを移動させつつトランジションする方法」
も適当に書き散らかしておきます。

では、れっつごーε≡≡ヘ( ´Д`)ノ

※2013/12/01 記事修正



たとえば、moveタグをマクロにしたいなぁと思ったとき

[ macro name=exmove ]
[ stopmove ]
[ move layer=%lay|0 path="(ここの書き方が分からない)" time=%t|1000 ]
[ wm ]
[ endmacro ]

考えても分からなかったので、某所の過去ログをガサゴソしてきました。
本当になんでも揃ってるよ、あの場所は。



moveタグに変数を指定する方法


その1 path="&'('+mp.x+', '+mp.y+', '+mp.opa+')'"
その2 path='&@"(${mp.x},${mp.y},${mp.opa})"'

その1もその2も中身は同じです。
その1のスクリプトでエラーが出るのを確認したので削除します。
クォーテーションの数をチェックしたり位置を変えたけどダメくさい。

その2の方はこのスクリプトでちゃんと動きました。
@つき文字列即値についてはリファレンスを参照して下さい。

作ったマクロは以下のように使用します。
[exmove x=100 y=100 opa=255]

座標や透明度がちょくちょく変わる場合に使うと便利かもしれません。
mpを使用していますが普通の変数でもOKです。配列も使えます。

移動先の座標が決まってる場合は、もっと簡単になります。
[ macro name=exmove ]
[ stopmove ]
[ if exp="mp.左から右" ]
[ eval exp="f.movepoint = '(100,0,255)'" ]
[ endif ]
[ if exp="mp.右から左" ]
[ eval exp="f.movepoint = '(300,0,255)'" ]
[ endif ]
[ move layer=%lay|0 path="&f.movepoint" time=%t|1000 ]
[ wm ]
[ endmacro ]

というマクロを作り、[exmove 左から右]または[exmove 右から左]と記述すればOK。
英語と日本語が混ざったブサイクマクロだけど気にしない。
パッと見て何をやってるか分かればいいと思うよ。



おまけ・前景レイヤを動かしながら背景をトランジションするには


キャラクタを前景レイヤ0に表示して移動させている途中に
ベースレイヤの背景画像をトランジションしたいとします。

; 背景画像をベースレイヤの表画面に読み込む
[image storage=hoge layer=base]
; 前景レイヤ0の表画面にキャラクタの画像を読み込む
[image storage=chara layer=0 top=0 left=0 opacity=255 visible=true]
; 表画面を裏画面にコピーする
[backlay]
; 前景レイヤ0を移動させる
[move layer=0 path=(100,0,255) time=3000]
; 背景画像2をベースレイヤの裏画面に読み込む
[image storage=hoge2 layer=base page=back]
; クロスフェードでトランジションする
[trans method=crossfade time=1000]
; トランジションの終了を待つ
[wt]
; 前景レイヤ0の移動を待つ
[wm][wm]

これを実行すると失敗します(ノ∀`)

移動していたハズのキャラクタが元の位置に戻ってしまいます。
普通のキャラクタが残像拳の使い手にジョブチェンジです。
これはこれで面白い効果になるのですが、今回はナシで。

エラーの原因は裏画面の画像を移動させていないこと。
こちらが指定しない限り裏画面はいっしょに動いてくれません。

残像拳を回避するためのスクリプトを追加します。
[image storage=hoge layer=base]
[image storage=chara layer=0 top=0 left=0 opacity=255 visible=true]
[backlay]
[move layer=0 path=(100,0,255) time=3000]

[move layer=0 path=(100,0,255) time=3000 page=back]
[image storage=hoge2 layer=base page=back]
[trans method=crossfade time=1000]
[wt]
[wm][wm]

これでOK(`・ω・´)b
それにしても汎用性のあるマクロを作るってのは難しいもんですな。


関連記事

コメント

コメントの投稿

Secret

トラックバック

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

Author

Recent

Category

Link

Comment

Mailform

Twitter