前回のお話で、とりあえずレイヤがどんなものか分かったと思うんだけど、大丈夫? | |
たぶん。 | |
じゃあ、前回の最後に出たサンプルのスクリプトから順に説明していくね。 | |
*start [image storage="shikaku.png" left=100 top=100 layer=0 page=fore visible=true] [image storage="maru.png" left=400 top=100 layer=1 page=fore visible=true] |
|
最初の *start はラベルと言います。 名札みたいなものね。「この場所は start という名前にします」ってこと。 |
|
同じ名前のラベルを作っても大丈夫? | |
それはダメ。 「startに行くよ〜」って言っても、*start がいくつもあったら、どこに行っていいか、分からないでしょ。 ただ、シナリオファイルが別なら大丈夫。 |
|
例えば? | |
今は first.ks って名前のシナリオファイルに、*start ってラベルを書いてるよね。 別のシナリオファイル、例えば second.ks ってシナリオファイルを作ったら、その中では *start ってラベルが使えるの。 |
|
混乱しない? | |
「first.ks の中の *start」とか「scond.ks の中の *start」って指示すれば、困らないでしょ。 | |
なるほど。郡山市って言っても分からないけど、奈良県の郡山市とか、福島県の郡山市とか言うと分かるもんね。 | |
そういうこと。 で、その次がいよいよ今回の本題なんだけど・・・ | |
[ ] でくくってある。 | |
この [ ] で書いてあるのをタグって言うんだけど、KAGはこのタグを書いて作っていくの。 | |
タグって、HTMLみたいなもの? | |
うん、そうそう。よく知ってるね。 KAGでは [ ] で囲っていて、かつ中身のタグが間違ってなければ命令を処理するけど、それ以外の場合は通常のメッセージとみなして、画面に表示するの。 |
|
わかった! 前のサンプルの「こんにちは。」は、タグじゃなかったから、画面に表示されたんだ。 |
|
大正解。 | |
タグは全部覚えないといけないの? | |
無理に覚える必要はないよ。kag3フォルダの中のkag3docフォルダにすごく丁寧なリファレンスがあって、それを見れば分かるからね。それに、使ってるうちに自然と覚えてしまうから。 | |
たくさんあるんだよね・・・ | |
あるね・・・ でも、よく使うのは限られてると思うし、そんなに難しくないよ。 |
|
わかった。 頑張ってみるよ。 | |
うん、その意気。 それで、今回のサンプルのタグは、image タグって言って、レイヤに画像を読み込むための命令なのね。 |
|
どんなものでも読み込めるの? | |
読み込める画像ファイルの形式はJPEG、PNG、BMP、ERI、TLG5、TLG6ね。 それぞれの特徴はリファレンスに書かれているから、状況に応じて使い分けるといいと思うよ。 |
|
使い分けって・・・どう使いわけていいか分からないよ。 | |
最初はJPEGかPNGでいいんじゃないかな。 勉強していくうちに、違いも分かるし、使い分けもできるようになるよ。 |
|
だといいんだけど・・・ | |
じゃあ、タグの中身を説明するね。 image がタグの名前。これはいいよね。 次の storage とか left とか色々並んでいるのが属性って言って、タグに対する詳細を指定できるの。 |
|
属性って、どんなタグでも一緒? | |
ううん。
同じ属性を使うものもあるし、タグによって別々のものもあるし、色々だよ。 例えば、この最初の storage って言うのは、ファイル名を指定する属性なんだけど、これなら音楽を再生するタグでも同じのが使えそうだよね。でも、例えば文字の色を変えるようなタグだと使えそうにないでしょ。 |
|
うん。 | |
つまりそういうこと。 この属性もいっぱいあるけど、使ってるうちに覚えるよ。 |
|
ホントかなぁ・・・ 不安になってきた・・・・ |
|
大丈夫、大丈夫。最初は誰だってそうなんだから。 で、次の left と top は表示する位置ね。 吉里吉里では画面の左上が原点だから、 left=100 top=100 ってことは、左から100ピクセル、上から100ピクセルの位置に shikaku.png を表示することになるの。 | |
四角のどの部分が (100,100) の場所になるの? | |
画像の一番左上ね。 だから、画像 (100,100) より右下に表示されることになるわけ。 図で書くとこんな感じ。 |
|
なるほど・・・ | |
次の layer=0 っていうのが表示するレイヤの番号ね。 標準では前景レイヤが3つに設定されているから、使用できるレイヤは0と1と2だよね。だから、ここでは0を指定してるの。 | |
もし、ここで3とかにするとどうなるの? | |
エラーが出て動かないよ。 興味があれば試してみるといいよ。 |
|
じゃあ、四角と丸を、両方0にしたら? | |
KAGのタグは書いてある順番に処理していくから、まずレイヤ0に四角を表示して、次に丸を同じレイヤ0に表示するの。 これは一瞬のことだから、丸だけが表示されたように見えるよね。 |
|
レイヤ0に四角と丸を両方表示することはできないの? | |
できるよ。 方法は2つあって、ひとつは四角と丸を両方描いた別の画像を用意すること。 たぶん、これは邪道というか、実際には使えない手ね。 もうひとつは、ちょっと難しいから、また今度ね。 |
|
page=fore って言うのは? | |
レイヤの表ページだって指定してるの。 | |
表ページ? | |
吉里吉里には、レイヤが表ページと裏ページにあって、表ページが画面に今見えてる面で、裏ページは画面には見えないの。 | |
見えないんだったら、意味ないんじゃない? | |
また今度説明するけど、トランジションって機能を使うには必要なんだよ。 | |
ふーん・・・よく分からないけど、とにかく必要なんだ。 | |
うん。 それで、今は画面に表示したいわけだから、表ページだって指定してるわけね。 でも、page 属性のデフォルト値は fore だから本当は指定してもしなくても、結果は同じなの。 ただ、スクリプトを見たときに、分かりやすいように書いておいた方がいいかもね。 |
|
デフォルト値って? | |
その属性を指定しなかった時(省略した時)に、自動的に設定される値のことだよ。 属性には省略できるものと、省略できないものがあって、省略できるものの中にはデフォルト値が決まってるものもあるの。 この辺のことは、リファレンスに詳しく書いてあるから、これも使いながら覚えていくしかないね。 |
|
んん〜〜、かなり頭がこんがらがってきたよ。 | |
ゆっくり覚えていけばいいよ。 | |
うん・・・・ | |
で、最後の visible は見えるか見えないかを設定する属性ね。 前回言ったように、すべてレイヤ(ベースレイヤは除く)は表示したり隠したりできるの。それは、この visible 属性を設定することで変更できるってわけ。 | |
レイヤの裏ページにするってこと? | |
ううん。確かに裏ページも見えないんだけど、visible で設定するのは、見えるか見えないか。 表ページだけど、表示はしないってことなんだよ。 だから、裏ページでも visible=true ってすれば、表示されるの。もちろん、裏ページだから表示されても見えないけどね。 |
|
んんん・・・ ますますこんがらがってきた・・・ |
|
じゃあ、少しサンプルを変更してみようか。 | |
*start [image storage="shikaku.png" left=100 top=100 layer=0 page=fore visible=true] [image storage="maru.png" left=400 top=100 layer=1 page=fore visible=true] クリックしてください。 [p] [layopt layer=0 page=fore left=300 top=200] [layopt layer=1 page=fore visible=false] |
|
layoptってタグがあるけど、これはレイヤオプション・・・つまり、レイヤの設定を変更するタグなの。属性の意味はimageタグの説明でしたのと一緒だから分かるよね。 | |
imageタグとほとんど一緒みたいだけど、何が違うの? | |
imageタグはレイヤに画像を読み込むための命令で、属性で色々指定できるのはおまけみたいな感じかな。 layoptタグはレイヤの設定だけを変更するためのタグだから、画像を読み込むことはできないの。 imageタグは画像を読み込むためのものだから、メッセージレイヤには使えないけど、layoptタグはすべてのレイヤに対して使えるよ。 |
|
メッセージレイヤは文字を表示するためのものだから、画像は読み込めないのね・・・ じゃあ、ゲームとかでよくある、メッセージを表示するウィンドウを画像にすることはできないの? |
|
できるけど、それは次回のお楽しみってことで。 | |
よかった、できるんだね。 できないと、味気ないもんねぇ。 あ、ベースレイヤはどうなるの? |
|
一緒だよ。レイヤの名前はbaseに決まってるから、使うならこんな感じかな。 | |
[image storage="base_sample.jpg" layer=base page=fore] | |
この画像を保存して、動作確認してみて。 | |
visible属性はいらないの? | |
ベースレイヤは常に表示されてるから必要ないんだよ。 あと、気をつけなければいけないのが画像のサイズね。 |
|
今、保存した画像のサイズは640x480だったよ。 | |
うん、それはね、ゲーム画面のサイズが640x480だからなんだよ。 | |
背景だから、ゲーム画面のサイズと一緒じゃないとダメってこと? | |
そういうこと。 これが違ってるとエラーになるからね。 ちなみに、ゲーム画面のサイズは、設定ファイルの Config.tjs で設定できるようになってるよ。 |
|
// ◆ 画面サイズ // scWidth に画面の幅、scHeight に画面の高さをピクセル単位で指定します。 // 標準的に使われている 640x480 や 800x600 のような画面サイズではないサイズ // に設定すると、フルスクリーンにできない場合があります。 ;scWidth = 640; ;scHeight = 480; |
|
このサイズを変更したら、背景画像のサイズも変更しないといけないんだね。 | |
話がちょっとわき道にそれちゃったけど、さっきの変更したサンプルはどうなると思う? | |
[p]って何? | |
あ、説明してなかったね。 KAGのリファレンスによると「改ページクリック待ち」タグね。文字通り、メッセージを表示して改ページするためにクリック待ちするためのタグだよ。 |
|
ということは、最初に四角と丸を表示して・・・ 「クリックしてください。」ってメッセージを表示して、クリック待ち。 次に、layer0の四角の表示してる場所を移動して、layer1の丸の表示を消す、かな。 |
|
はい、よくできました。 じゃあ、実際に動かしてみようか。 |
|
おお! 予想通りだ! |
|
ね、思った通りに動いてくれると楽しくなってくるでしょ。 | |
うん。 もうゲーム作れるかも。 |
|
それはまだ早いよ・・・ |