空想曲線

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

吉里吉里/KAG:使い勝手の良いマクロを作ろう メッセージレイヤ編1  

2015-06-24[Wed]
cm0
tb0

今回はメッセージレイヤのマクロを作っていきます。


▼まずはノベルゲームでおなじみのこのタイプからいきます。
全画面テキストサンプル5
※背景素材はぐったりにゃんこのホームページさまから、キャラクタはとくだ屋さまからお借りしました


表示位置の指定やマージンなど、基本をしっかりおさえておきましょう。



1.メッセージレイヤの設定


吉里吉里の初期設定値がベストだと思います。ここでは visible を false にしています。


▼全画面テキスト用に使用するメッセージレイヤの余白とマージンを設定
[ macro name=全画面テキスト設定 ]
; オモテ画面
[ position layer=message0 top=16 left=16 width=640-32 height=480-32
margint=8 marginr=8 marginb=8 marginl=8 opacity=0 visible=0 ]

; ウラ画面
[ position layer=message0 top=16 left=16 width=640-32 height=480-32
margint=8 marginr=8 marginb=8 marginl=8 opacity=0 visible=0 page=back]

[endmacro]


↓設定はこんなカンジ
全画面テキスト設定1


↓実際の画面はこんなカンジ。白枠がメッセージレイヤの範囲
全画面テキスト設定2



2.メッセージレイヤを表示するマクロを作る


メッセージレイヤをクロスフェード表示するかどうかによってマクロの中身が変わります。
好みに合わせて調整しましょう。
また、前回までに作ったマクロをいくつか流用していきます。
マクロの詳細については該当記事をごらんください。



 「使い勝手の良いマクロを作ろう 背景画像編」を読む
 「使い勝手の良いマクロを作ろう キャラ立ち絵編」を読む



▼トランジション停止+表画面を裏画面にコピー
[ macro name=遷移準備 ]
[ stoptrans ]
[ backlay ]
[ endmacro ]

▼裏画面のベースレイヤに画像を読みこむマクロ
[ macro name="背景読込" ]
[ 遷移準備 ]
[ image * storage=%画像 layer=base page=back ]
[ endmacro ]

▼クロスフェードトランジションするマクロ
[ macro name="クロスフェード" ]
[ trans method=crossfade time=%時間|1000 ]
[ wt ]
[ endmacro ]


ここから新しくマクロを作ります。


▼メッセージレイヤの visible を true か false  にするだけのマクロ
; デフォルトではメッセージレイヤの表画面を可視にしている
[ macro name=全画面テキスト視覚 ]

; ウラ画面を指定したとき
[ if exp="mp.裏" ]
[ eval exp="mp.page = 'back'" ]
; 何も書いてないときはオモテ画面を指定
[ else ]
[ eval exp="mp.page = 'fore'" ]
[ endif ]

; 可視のとき
[ eval exp="mp.visible = 'true'" cond="mp.可視" ]
; 不可視のとき
[ eval exp="mp.visible = 'false'" cond="mp.不可視" ]

[ layopt layer=message0 visible="&mp.visible" page="&mp.page" ]

[ endmacro ]


[ 全画面テキスト視覚 ] マクロのつかいかたは

 オモテ画面を 可視にする [ 全画面テキスト視覚 可視 ]
 ウ ラ画面を 可視にする [ 全画面テキスト視覚 可視 裏 ]
 オモテ画面を不可視にする [ 全画面テキスト視覚 不可視 ]
 ウ ラ画面を不可視にする [ 全画面テキスト視覚 不可視 裏 ]



3.メッセージレイヤを操作対象にするマクロを作る


複数のメッセージレイヤを使用するときは操作対象のレイヤを指定しておかないと
意図していないレイヤにテキストが表示されるバグを生み出す可能性があります。


▼メッセージレイヤを操作対象にするマクロ
[ macro name=全画面テキスト操作 ]

; 指定がないときはオモテ画面
[ if exp="mp.裏"]
[ eval exp="mp.page = 'back'" ]
[ else ]
[ eval exp="mp.page = 'fore'" ]
[ endif ]

[ current layer=message0 page="&mp.page" ]
[ endmacro ]


[ 全画面テキスト操作 ] マクロのつかいかた

 オモテ画面を操作対象にする [ 全画面テキスト操作 ]
 ウ ラ画面を操作対象にする [ 全画面テキスト操作 ]



4.組み合わせてひとつのマクロにする


実際にシナリオファイルで使用するのは以下のマクロです。


▼クロスフェードなしでメッセージレイヤを表示、カレントは表画面
[ macro name=全画面テキスト表示 ]
[ 全画面テキスト設定 ]
[ 全画面テキスト視覚 可視 ]
[ 全画面テキスト操作 ]
[ endmacro ]

▼クロスフェードありでメッセージレイヤを表示、カレントは表画面
[ macro name=全画面テキスト表示_クロスフェード ]
[ 遷移準備 ]
[ 全画面テキスト設定 ]
[ 全画面テキスト視覚 可視 裏 ]
[ クロスフェード 時間=400 ]
[ 全画面テキスト操作 ]
[ endmacro ]


以下、具体的な使用例です。


*sample
[ cm ]
; メッセージレイヤをクロスフェードで表示
[ 全画面テキスト表示_クロスフェード ]

あいうえお[ r ]
かきくけこ[ r ]
さしすせそ[ l ][ r ]


実行するとつぎのようになります。


全画面テキストサンプル1


; メッセージレイヤをクロスフェードで不可視に
[ 遷移準備 ]
[ 全画面テキスト視覚 不可視 裏 ]
[ クロスフェード 時間=500 ]


いったんメッセージレイヤを見えないようにして


全画面テキストサンプル2


; キャラクタをクロスフェードで表示
[ 遷移準備 ]
[ キャラA 笑 右 ]
[ クロスフェード ]


キャラクタを表示します


全画面テキストサンプル3


; メッセージレイヤをクロスフェードで再度表示
; さっきまでのテキストはそのまま残っています
[ 遷移準備 ]
[ 全画面テキスト視覚 可視 裏 ]
[ クロスフェード 時間=500 ]


メッセージレイヤを表示します。さっきのテキストは残ったままになっています。


全画面テキストサンプル4


; テキストつづき
たちつてと[ r ]
なにぬねの[ r ]
はーひふーへほー[ p ]


で、テキストのつづきを書きます。


全画面テキストサンプル5



5.メッセージレイヤを消去するマクロを作る


さっき作っておいたマクロを活用します。


▼クロスフェードなしでメッセージレイヤを消去
[ macro name=全画面テキスト消去 ]
; ↓マクロを作らず、これを書いてもおっけい
[ 全画面テキスト視覚 不可視 ]
[ endmacro ]

▼クロスフェードありでメッセージレイヤを消去
[ macro name=全画面テキスト消去_クロスフェード ]
[ 遷移準備 ]
[ 全画面テキスト 不可視 裏 ]
[ クロスフェード ]
[ endmacro ]


クロスフェードだけでなく、スクロールやユニバーサルトランジションで消去したいなら
mp 変数を使用して場合分けをしてみたり、トランジションの手前でマクロを分割したり
使いやすくなるよう自分なりに工夫していくとマクロ作るの楽しくなりますよー。

次回は会話用のマクロを作っていきます。
下画面に名前とセリフを書くスタイルはすでに書いているので、今度は↓これ↓に挑戦します。


20150616_003.jpg


ではではー (´∀`*)ノシ

関連記事

コメント

コメントの投稿

Secret

トラックバック

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

現在のページ

Category

Link

Comment

Mailform

Author

Twitter