空想曲線

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

吉里吉里/KAG:コピペで使えるテキストフェードマクロ  

2013-12-11[Wed]
cm0
tb0

うまい説明ができませんが、文章がゆっくり現れるアレです。
主人公のモノローグなんかによく使われているやつです。
使いやすいようにカスタマイズしてやってください。



テキストフェードインマクロ


まずは、テキストを表示するほうから。

[ macro name=txt_fadein ]
;メッセレイヤの裏画面を可視に
[ layopt layer="&'message'+mp.lay" visible=true page=back ]
;メッセレイヤの裏画面をカレントに
[ current layer="&'message'+mp.lay" page=back ]
;テキストをセンタリングする
[ style align=center ]
;テキストの位置を指定
[ locate x=%x y=%y ]
;表示したいテキスト
[ ch text="&mp.txt" ]
;スタイルをデフォルトに戻す
[ style align=default ]
;1000ミリ秒でクロスフェードトランジション
[ trans method=crossfade time=%t|1000 ]
[ wt ]
[ endmacro ]

●つかいかた
;メッセレイヤ1の Y 座標100に「ひゃっほい」と表示する
[ txt_fadein lay=1 y=100 txt="ひゃっほい" ]

使用するときに記述する項目は以下の3つです。

 lay……テキストを表示するメッセージレイヤの番号
 txt……表示するテキストの中身
  y……テキストを表示するY座標

指定レイヤの「message」はマクロに放り込んであるので
番号だけ書けば大丈夫です。いちいち書くのメンドイじゃん。

Y座標を指定しない場合はメッセレイヤの上側に表示されます。
センタリングをせずに、自分で X 座標を指定したいときは
[ style align=center ][ stylealign=default ]をコメントアウトして

[ txt_fadein lay=1 x=100 y=100 txt="ひゃっほい" ]

と追加すればOKです。ひゃっほい。



テキストフェードアウトマクロ


次に、テキストを消去するほう。

[ macro name=txt_fadeout ]
;表画面を裏画面にコピー
[ backlay ]
;メッセレイヤの裏画面を不可視に
[ layopt layer="&'message'+mp.lay" visible=false page=back ]
;1000ミリ秒でクロスフェードトランジション
[ trans method=crossfade time=%t|1000 ]
[ wt ]
[ endmacro ]

●使用例
;メッセレイヤ1をゆっくり消去
[ txt_fadeout lay=1 t=1500]
;メッセレイヤに書かれたテキストを消去
[ cm ]
;メッセレイヤ1を可視に戻す
;使用しないなら不可視のままでOK
[ layopt layer=message1 visible=true ]

テキストを表示したメッセージレイヤの裏画面を不可視にして
クロスフェードトランジションをかけています。
不可視になっているだけなのでテキスト自体は残っています。
可視に戻す前に[ cm ]タグでテキストをクリアするのを忘れずに。



テキストフェードマクロ応用編


「一行ずつテキストを表示して、一行ずつ消したいんだけど」

(`・ω・)b < ムリヤリでもいいなら任せろ!

さっき作ったマクロを応用すれば何とかなります。

たとえば、次のテキストを一行ずつゆっくり表示した後
表示した順にゆっくりと消していく処理をしたいとします。

 1行目|取られたら
 2行目|取り返せば
 3行目|いいじゃない

このテキスト一行ごとにメッセージレイヤを割り当てます。
なお、例文のテキストに深い意味はありません。

 1行目|メッセージレイヤ0
 2行目|メッセージレイヤ1
 3行目|メッセージレイヤ2

行数分のメッセージレイヤが必要になります。
3行分なら3枚、5行分なら5枚といったカンジです。
レイヤの枚数が足りないとエラーが出るのでご注意ください。

んじゃ、一気に書いていきます。

;1行目を表示
[ txt_fadein lay=0 y=100 txt="取られたら" ]
;2行目を表示
[ txt_fadein lay=1 y=150 txt="取り返せば" ]
;3行目を表示
[ txt_fadein lay=2 y=200 txt="いいじゃない" ]

;ちょっと待つ
[ wait time=2000 ]

;1行目を消す
[ txt_fadeout lay=0 ]
;2行目を消す
[ txt_fadeout lay=1 ]
;3行目を消す
[ txt_fadeout lay=2 ]

;メッセージレイヤを全部クリア
[ cm ]
;メッセージレイヤ0を可視にしてカレントにする
[ layopt layer=message0 visible=true]
[ current layer=message0 ]

表示したメッセージレイヤを一気に消したい場合は、[ backlay ] をかけた後
使用したメッセレイヤの裏画面を全て不可視( visible=false )にしてトランジション。

が、これをやると後でまた visible = true に戻すのが面倒だと思うので

[ eval exp="kag.back.messages[レイヤ番号].clear()" ]

と書いて、指定したメッセレイヤの裏画面を消去するのがラクかも。

行数が多いとマクロを作っていてもスクリプトが長くなるんだけど
こういった演出なら、せいぜい5~6行くらいが限度だと思うんで
コピペで乗り切ればいいじゃない。ちょちょっとコピってぺぺぺぺっと。

では、今回はこれにて (´∀`*)ノシ


関連記事

コメント

コメントの投稿

Secret

トラックバック

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

現在のページ

Category

Link

Comment

Mailform

Author

Twitter