スポンサーサイト

  • --/--/--(--) --:--:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

吉里吉里4

  • 2008/02/02(土) 16:23:05

架空戦記のための吉里吉里/KAG紙芝居講座
第四回


駆け足で説明して参りました吉里吉里講座。
いいかげん飽きるわw

さて、今回は紙芝居で定番の例の形式。
これね。

04-1.jpg


例のごとく顔グラ素材だ

http://www.geocities.jp/yukipohuurai/sozai3.zip

前置きもすっ飛ばしてサンプル!

03.ks

[image storage="背景.png" layer=base]

[position layer=message0 frame="mlayer2.jpg"]
[position layer=message0 left=20 top=306]
[position layer=message0 marginl=15 margint=20 marginr=5 marginb=8]
[position layer=message0 visible=true]
[position layer=message1 frame="nlayrer"]
[position layer=message1 left=20 top=285]
[position layer=message1 marginl=5 margint=-2 marginr=5 marginb=0]
[position layer=message1 visible=true]

[current layer=message0]
[deffont color=0x000000 shadow=false size=20 face="MS 明朝" bold=false]
[resetfont]
[current layer=message1]
[deffont color=0x000000 shadow=false size=22 face="MS 明朝" bold=false]
[resetfont]
[current layer=message0]

[image layer=0 storage=雪歩04.png visible=true left=20 top=40]
[image layer=1 storage=真04.png visible=true left=380 top=40]

[cm]
[nl n=雪歩]
紙芝居の定番。[r]
メッセージレイヤ一枚、上に顔グラを数枚並べる形式ですね。[r]
これは発言者以外を半透明にすると可読性もよくなります。[r]
画像を小さくすれば3人以上でも可能です。[p][cm]

[nl n=真]
なるほどねー。[p]





マクロを使用していますので、以前の講座もちゃんと読むこと。
まあ、ここまで全て読んだ方には説明の必要も無いよね。
あとは応用あるのみ。

なんですが、まあここで小技。
こういう形式は発言者以外が半透明というのが多々あります。
そのほうが読みやすいですしね。

というわけで、マクロを組みましょう

first.ksのjump前に追記

[macro name=gura]
[if exp="mp.l==0"]
[image layer=0 storage=%s visible=true left=20 top=40 opacity=255]
[move layer=1 time=200 path="(380,40,190)"]
[endif]
[if exp="mp.l==1"]
[image layer=1 storage=%s visible=true left=380 top=40 opacity=255]
[move layer=0 time=200 path="(20,40,190)"]
[endif]
[current layer=message1]
[style align=center]
[ch text=%n]
[current layer=message0]
[endmacro]



使用例
[gura l=0 s=雪歩04.png n=雪歩]
真ちゃーん[l]
[gura l=1 s=真04.png n=真]
雪歩ー[l]


まーた変なのが出てきましたね。
if~endifとmove。
ifというのはexp内の式が正しければendifまでを実行、正しくなければスルー、というタグです。
mp.lというのは、マクロに渡された l のこと。
つまりこのマクロで言えばレイヤ情報です。
マクロに渡される属性をif等で利用する場合は、mp.を付けます。
画像のファイル名を持っているのは s なので、もしこれを利用したい場合は mp.s となります。
では一旦マクロに渡される属性を確認してみましょう。

[gura l=0 s=雪歩04.png n=雪歩]

これは「レイヤ0に雪歩04.pngを表示し、名前は雪歩と記入」ということをしたいわけです。。
雪歩04.pngが表示されるのはレイヤ0なので、それ以外を半透明にしたい。
l=0を渡した場合、[if exp="mp.l==0"]が真を返します。
= と == は別ですので注意。
ですのでendifまでを実行します。
逆に[if exp="mp.l==1"]では偽を返しますので、endifまではスルーです。
最初のifを見てみましょう。

[image layer=0 storage=%s visible=true left=20 top=40 opacity=255]
[move layer=1 time=200 path="(380,40,190)"]

レイヤ0に画像を表示し、透明度は255に設定する。
レイヤ1は200ミリ秒をかけて、位置380,40に移動、透明度を190に変更する。

というタグです。
moveとはありますが、元々レイヤ1は380,40にあります。
つまり単純に200ミリで透明度を190まで落とす処理です。
これで少しスムーズに顔グラが半透明になりますです。
でも録画のフレームレートによっては意味の無い設定ですので、素直に
[layopt layer=1 opacity=190]
でもいいです。

04-2.jpg
04-3.jpg


もっとスマートにできる方法もあるでしょう。そんときは教えてください。
これが3人以上の場合は、ifを増やして使います。

[if exp="mp.l==0"]
[image layer=0 storage=%s visible=true left=xx top=xx opacity=255]
[move layer=1 time=200 path="(xx,xx,190)"]
[move layer=2 time=200 path="(xx,xx,190)"]
[endif]
[if exp="mp.l==1"]
[move layer=0 time=200 path="(xx,xx,190)"]
[image layer=1 storage=%s visible=true left=xx top=xx opacity=255]
[move layer=2 time=200 path="(xx,xx,190)"]
[endif]
[if exp="mp.l==2"]
[move layer=0 time=200 path="(xx,xx,190)"]
[move layer=1 time=200 path="(xx,xx,190)"]
[image layer=2 storage=%s visible=true left=xx top=xx opacity=255]
[endif]



まあ、この辺は取っつきにくいところもあるので、見なかったことにしましょう。


それと今までの実行サンプルも置いておきます。
背景は全部太閤立志伝より。

04-5.jpg
04-6.jpg

スポンサーサイト

この記事に対するトラックバック

この記事のトラックバックURL

この記事にトラックバックする(FC2ブログユーザー)

この記事に対するコメント

乙でございます

なんというわかりやすい講座・・・
参考にさせていただきます

  • 投稿者: momue
  • 2008/02/02(土) 19:22:46
  • [編集]

お礼

今作成中のゲームで行き詰まってしまい、こちらのサイトにたどり着きました。
大変参考になり、おかげさまで解決しました。
どうもありがとうございます。また勉強させて頂きに来ます。

  • 投稿者: なお
  • 2008/07/17(木) 22:45:28
  • [編集]

この記事にコメントする

管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。