【LiveMaker講座 -変数で画像を表示しよう-】
LastUpData...2006.07.01

-[ Section Index ]-

Part.1--Introduction
目的の紹介
Part.2--Explanation
内容の説明
Part.3--Download
サンプルのダウンロード
Part.4--Memory
更新履歴



Part.1--Introduction

RPGモノを作るときにはかかせないHPやMPといったステータスですが、これらの表示には画像がかかせません。そこで、HPやMPなどを表示することを想定した画像の表示方法を考えてみました。

一般的に、ステータスは変数に記録されているので、変数の内容を画像で表示することになります。LiveMakerにも「変数で画像表示」というサンプルが付属しています。ですので、サンプルをそのまま使ってもいいのですが、サンプルは条件分岐で表示する画像を変えているので、最大HP・現在HP・最大MP・現在MPなど、たくさんの数字を表示しようとすると、チャートが非常に大きくなってしまいます。そこで、表示する画像の指定に変数を使うことで、条件分岐を使わないスマートな画像表示に挑戦してみました。

(方法の説明なので、表示する変数はサンプルと同じ乱数にしています)




Part.2--Explanation

1.画像の準備

上のように、画像を11枚用意します(ファイル名は、0.gal〜9.galとbase.galとします)。これらを、「runimage」フォルダにある「グラフィック」フォルダにおくことにします。

2.画像の座標設定
シナリオを作成し、base.galを表示したい座標に画像表示します(このサンプルでは、とりあえず中央寄せにしています)。名前は、「数字」とします。

3.乱数と画像パスの生成
乱数の生成は付属サンプルと同じですが、今回は数字を増やして0〜9を表示するようにします。ご存知の方が多いと思いますが、

Random(n) : 0〜(n-1)の乱数を返す
例)Random(5) = 0〜4の乱数を返す

となっています。今回欲しい数は0〜9なので、Random(10)となります。
次に画像パスの生成なのですが、画像パスというのは僕の個人的な言い方です。LiveMakerでは、画像表示や画像変更をするとき、ファイル名のところに「顔\chara01.gal」や「立ち絵\少年.gal」と表示されると思いますが、それのことです。「顔\chara01.gal」の場合、ファイル名である「chara01.gal」とファイルの場所を表す「顔\」を区別したいので、勝手にそう呼んでいます。わかりにくくなるかもしれませんが、許してください。
さて、それで画像パスなんですが、今回は「グラフィック」フォルダに直接画像をおいているので、画像パス=ファイル名になります。つまり、「”乱数の数字”.gal」が画像パスになればよい、ということになります。そこで、下の図のように計算します。

画像パスに、「表示する数字」という変数の内容に「.gal」をくっつけた文字列を代入しています。例えば、「表示する数字」が6であれば、「画像パス=6.gal」となります。これで、画像パスの生成ができました。画像名という変数に、「数字」という文字列が代入されていますが、これはさきほど画像表示でつけた名前のことです。今回は変数を使う必要がないのですが、次回で化けます(笑)

4.画像の表示
これまでで、画像を表示する準備が整いました。下のように設定して、画像変更で画像を表示してみましょう。

ここまでに説明した「画像パス」「画像名」を使っています。頭についている?は、次にくるのは変数の名前ですよ、というしるしです。
上の図で行っていることは、「表示する数字」が6だった場合は、次の図と同じ内容になります。

これで説明はおしまいです。サンプルでは、LiveMakerのサンプルと同じように、繰り返し画像を表示するようにしていますが、基本的には説明したとおりになっています(画像消去にも変数を使う点がちょっと違うだけ)。サンプルをダウンロードして実行してみてください。




Part.3--Download

■サンプルのダウンロード
サンプルは、そのままでは実行できません。LiveMakerで開いて、ビルドしてから実行してみてください。

サンプル:変数で画像を表示 sample01.zip をダウンロードする




Part.4--Memory

2006/07/01
とりあえず作成。サンプル作成は30分、説明書くのに3時間。気づけばAM5:00


LiveMaker講座へ戻る


CopyRight 2000-2006, Dreaming Walker All Rights Reserved.