空想曲線

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

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

2015-06-30
2017-06-16
cm0
tb0

マクロつくろうシリーズ。予告通り↓これをやります。


フキダシ用マクロサンプル1
※背景素材はぐったりにゃんこのホームページさまから、キャラクタはとくだ屋さまからお借りしました


あまりフクザツになると私の頭がついていかないので簡単な内容になっています。

 ・フキダシは「左側のキャラ」と「右側のキャラ」用の2種類
 ・フキダシの種類は「通常」「ツッコミ」「とほほ」の3種類
 ・履歴レイヤがぐちゃぐちゃなのは自分で何とかしてくれ(丸投げ

では、行ってみようーε≡≡ヘ( ´Д`)ノ



1.キャラクタ用のマクロを作る


さきにキャラクタ用の表示マクロを作っておきます。
消去マクロは「使い勝手の良いマクロを作ろう キャラ立ち絵編」から流用します。


▼左側の男子用
[ macro name="キャラ男" ]
; 何も書かなければ普通の顔
[ eval exp="mp.sto = '男子001'" ]
; ツッコみたいとき
[ eval exp="mp.sto = '男子002'" cond="mp.ツッコミ" ]
; とほほな気持ちのとき
[ eval exp="mp.sto = '男子003'" cond="mp.とほほ" ]

; デフォルトでは前景レイヤ1使用、左側に表示
[ eval exp="mp.pos = 'left', mp.layer = 1" ]
; 今回は使わないのでコメントアウトします
;[ eval exp="mp.pos = 'right', mp.layer = 2" cond="mp.右" ]
;[ eval exp="mp.pos = 'center', mp.layer = 0" cond="mp.中央" ]

; ウラ画面に読み込みたいとき
[ eval exp="mp.page = 'back'" cond="mp.裏" ]

; 画像を読み込みます
[ image storage="&mp.sto" layer="&mp.layer" pos="&mp.pos" visible=1 page="&mp.page" ]

[ endmacro ]


女のコも同じように作ります。


▼右側の女子用
[ macro name="キャラ女"]
; 通常時
[ eval exp="mp.sto = '女子001'" ]
; にこにこ
[ eval exp="mp.sto = '女子002'" cond="mp.ボムる" ]
; おこ
[ eval exp="mp.sto = '女子003'" cond="mp.ぷんぷん" ]

; デフォルトでは前景レイヤ2使用、右側に表示
[ eval exp="mp.pos = 'right', mp.layer = 2" ]
;[ eval exp="mp.pos = 'right', mp.layer = 2" cond="mp.右" ]
;[ eval exp="mp.pos = 'center', mp.layer = 0" cond="mp.中央" ]


; ウラ画面に読み込みたいとき
[ eval exp="mp.page = 'back'" cond="mp.裏" ]

; 画像を読み込みます
[ image storage="&mp.sto" layer="&mp.layer" pos="&mp.pos" visible=1 page="&mp.page" ]
[ endmacro]



2.フキダシ用のメッセージレイヤを設定する


画面左にいるキャラ用のフキダシと、画面右にいるキャラ用のフキダシを設定します。
画面左のフキダシはメッセージレイヤ0、画面右のフキダシはメッセージレイヤ1を使います。


▼左側の男子用
[ macro name=フキダシ設定_左 ]
; 通常
[ eval exp="mp.frame = 'frame001_l'" ]
; ツッコミ用
[ eval exp="mp.frame = 'frame002_l'" cond="mp.ツッコミ" ]
; とほほ用
[ eval exp="mp.frame = 'frame003_l'" cond="mp.とほほ" ]
; レイヤ指定
[ eval exp="mp.layer = 'message0'" ]
; フレーム画像によってサイズやマージンを変える場合は↑に追加
[ position layer="&mp.layer" frame="&mp.frame" top=50 left=120 width=300 height=160
margint=25 marginr=10 marginb=20 marginl=50 visible=0 ]

[ position layer="&mp.layer" frame="&mp.frame" top=50 left=120 width=300 height=160
margint=25 marginr=10 marginb=20 marginl=50 visible=0 page=back ]

[ endmacro ]

▼右側の女子用
[ macro name=フキダシ設定_右 ]
; 通常
[ eval exp="mp.frame = 'frame001_r'" ]
; ツッコミ用
[ eval exp="mp.frame = 'frame002_r'" cond="mp.ツッコミ" ]
; とほほ用
[ eval exp="mp.frame = 'frame003_r'" cond="mp.とほほ" ]
; レイヤ指定
[ eval exp="mp.layer = 'message1'" ]
; フレーム画像によってサイズやマージンを変える場合は↑に追加
[ position layer="&mp.layer" frame="&mp.frame" top=150 left=200 width=300 height=160
margint=25 marginr=30 marginb=20 marginl=28 visible=0 ]

[ position layer="&mp.layer" frame="&mp.frame" top=150 left=200 width=300 height=160
margint=25 marginr=30 marginb=20 marginl=28 visible=0 page=back ]

[ endmacro ]


なお、上記のマクロではフキダシが見えない状態になっています。
レイヤの可視/不可視はつぎのマクロで設定します。


▼レイヤの可視・不可視を操作するマクロ
[ macro name=フキダシ視覚 ]

; 何も書かなければオモテ画面を指定
[ eval exp="mp.page = 'back'" cond="mp.裏" ]

; 可視・不可視を指定
[ eval exp="mp.visible = 1" cond="mp.可視" ]
[ eval exp="mp.visible = 0" cond="mp.不可視" ]

; レイヤを指定
[ eval exp="mp.layer = 'message0'" cond="mp.左" ]
[ eval exp="mp.layer = 'message1'" cond="mp.右" ]

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


左側のフキダシ

 オモテを可視に  [ フキダシ視覚 左 可視 ]
 ウ ラを可視に  [ フキダシ視覚 左 可視 裏 ]
 オモテを不可視に [ フキダシ視覚 左 不可視 ]
 ウ ラを不可視に [ フキダシ視覚 左 不可視 裏 ]

右側も書きかたは同じ。属性を書く順番は入れ替わっても大丈夫です。


つぎに操作対象を指定するマクロを作ります。
左右どちらのフキダシにセリフを表示するかという指定と、表示するときのフォントカラーを指定します。


▼カレントレイヤを指定するマクロ
[ macro name=フキダシ操作 ]

; 何も書かなければオモテ画面を指定
[ eval exp="mp.page = 'back'" cond="mp.裏" ]

; 左のフキダシならメッセージレイヤ0、フォントカラーは0xEEEEEEを指定
[ eval exp="mp.layer = 'message0', mp.color = '0xEEEEEE'" cond="mp.左" ]
; 右のフキダシならメッセージレイヤ1、フォントカラーは0x333333を指定
[ eval exp="mp.layer = 'message1', mp.color = '0x333333'" cond="mp.右" ]

; カレントレイヤの番号とオモテウラの指定
[ current layer="&mp.layer" page="&mp.page" ]
; フォントカラーの指定
[ font color="&mp.color" ]
[ endmacro ]


これで設定が終わったので、実際に使用するマクロを組み立てていきます。
個人的な話ですが、この組み立て作業がめっちゃ好きです(´∀`*)



3.フキダシを表示するマクロを作る


フキダシの表示は左と右で別のマクロを準備します。


▼左側のフキダシ表示マクロ
[ macro name=フキダシ左 ]
; ここで設定するのはフキダシに使う画像(ツッコミとかとほほ)の指定
[ フキダシ設定_左 * ]
; クロスフェードで表示する場合
[ if exp="mp.表示" ]
[ 遷移準備 ]
[ フキダシ視覚 左 裏 可視 ]
[ クロスフェード 時間=200 ]
; クロスフェードなしで表示する場合
[ else ]
[ フキダシ視覚 左 可視 ]
[ endif ]
; 左のフキダシ用のメッセージレイヤを操作対象に
[ フキダシ操作 左 ]
[ endmacro ]

▼右側のフキダシ表示マクロ
[ macro name=フキダシ右 ]
[ フキダシ設定_右 * ]
[ if exp="mp.表示" ]
[ 遷移準備 ]
[ フキダシ視覚 右 裏 可視 ]
[ クロスフェード 時間=200 ]
[ else ]
[ フキダシ視覚 右 可視 ]
[ endif ]
[ フキダシ操作 右 ]
[ endmacro ]


それでは実際に使うときのスクリプトを書いていきましょう。


*sample
[ cm ]

; 背景読み込み
[ 背景読込 画像=bg_001 ]
; 男子をウラ画面に読み込み
[ キャラ男 裏 ]
; 女子をウラ画面に読み込み
[ キャラ女 裏 ]
; トランジション
[ クロスフェード ]

; 左側に通常のフキダシを出す。テキストはメッセレイヤ0に表示
[ フキダシ左 表示 ]
通常時のフキダシは[ r ]メッセレイヤ0に表示される[ p ]

; 右側に通常のフキダシを出す。テキストはメッセレイヤ1に表示
[ フキダシ右 表示 ]
あたしのセリフは[ r ]メッセレイヤ1だよ[ p ]


▼実行するとこうなります。冒頭でお見せしたスクリーンショットです
フキダシ用マクロサンプル1


それではつづけて


; 男の子の表情をツッコミに変更
[ キャラ男 ツッコミ ]
; 左のフキダシをツッコミ用に変更。テキストはメッセレイヤ0に表示
[フキダシ左 ツッコミ]
俺のフキダシに[ r ]セリフかぶせんな![ p ]

; 女の子の表情をぷんぷんに変更
[ キャラ女 ぷんぷん ]
[ フキダシ右 ]
もーうるさいなー[ p ]


▼実行するとこんなカンジ
フキダシ用マクロサンプル2


さらにつづけてどっこいしょー。


; 女の子、満面の笑み
[ キャラ女 ボムる ]
; 右のフキダシをツッコミ用に変更
[ フキダシ右 ツッコミ ]
消えちゃえボム![ p ]


▼実行するとこんなん。元ネタが分かった人はその場で健太郎くんスラッシュ100回
フキダシマクロサンプル3


消えちゃえボムが発動したのでフキダシを消去するマクロを作ります。



4.フキダシを消去するマクロを作る


といっても、これまでに作ったマクロを流用するだけなのでカンタンに作れます。
表示のときは左右で別のマクロを作りましたが、消去はひとまとめにします。


▼フキダシを消去するマクロ
[ macro name=フキダシ消去 ]

; クロスフェードで消去するときだけ実行
; マクロにも cond は使用できるので活用しましょう
[ 遷移準備 cond="mp.クロスフェード" ]

; 左側を消したい
[ if exp="mp.左" ]
 ; ※コピペするときは全角スペースを詰めてね
 ; クロスフェード時
 [ if exp="mp.クロスフェード" ]
 [ フキダシ視覚 左 裏 不可視 ]
 ; クロスフェードしない
 [ else ]
 [ フキダシ視覚 左 不可視 ]
 [ endif ]
[ endif ]

[ if exp="mp.右" ]
 [ if exp="mp.クロスフェード" ]
 [ フキダシ視覚 右 裏 不可視 ]
 [ else ]
 [ フキダシ視覚 右 不可視 ]
 [ endif ]
[ endif ]


; トランジションの時間は少し短めに
[ クロスフェード 時間=200 cond="mp.クロスフェード" ]

[ endmacro ]


左側のフキダシを
 クロスフェードありで消したい [ フキダシ消去 左 クロスフェード ]
 クロスフェードなしで消したい [ フキダシ消去 左 ]

右側のフキダシを
 クロスフェードありで消したい [ フキダシ消去 右 クロスフェード ]
 クロスフェードなしで消したい [ フキダシ消去 右 ]
 
両方のフキダシを
 クロスフェードありで消したい [ フキダシ消去 左 右 クロスフェード ]
 クロスフェードなしで消したい [ フキダシ消去 左 右 ]

では、さっきのつづきを書いていきます。


; ボムられた男子とフキダシをクロスフェードで消去
[ 遷移準備 ]
; ウラ画面のキャラ男を不可視にする
[ キャラ消去 左 裏 ]
; 左のフキダシのウラ画面を不可視にする
[ フキダシ視覚 左 裏 不可視 ]
[ クロスフェード ]


▼フキダシと共に男子が消え去りました
フキダシマクロサンプル4


では、つづきを。


; 右のフキダシをクロスフェードで消去
[ フキダシ消去 右 クロスフェード ]

; とほほ系男子表示
[ 遷移準備 ]
[ キャラ男 裏 とほほ ]
[ クロスフェード ]

; フキダシ表示
[ フキダシ左 表示 とほほ ]
……死ぬかと思った[ p ]


▼とほほなカンジで男子がもどってきました
フキダシマクロサンプル5


といったカンジになりました。

フキダシの形がフクザツになるとマージンの調整がむずかしいですにゃあ。
最大で何文字入るか計算したり、行数によって開始位置の座標を変えたり
思っているより少しだけ手間がかかります。作るの楽しかったけどね(´∀`*)

次回は選択肢用のマクロを予定していますが、凝ったシステムにすると初心者向けではなくなるので
ものすごくシンプルなものになると思われます。なにとぞご了承ください。


▼さっきのオチ
フキダシマクロサンプル6

関連記事

コメント

コメントの投稿

Secret

トラックバック

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

Author

Recent

Category

Link

Comment

Mailform

Twitter