今回はHSP3.2β3で新しく追加された2Dキャラクター表示のためのセル描画命令を紹介します。 gcopy命令では、バッファ内の一部をコピーして、現在の描画対象ウィンドウに貼り付けるだけですが、 今回紹介する命令では、従来のgcopy命令と同様の描画も行えるし、 バッファを任意のサイズのセルとして分割管理することで、素材を明確に分けることができます。 また、将来的にはαチャンネルサポートやDirectX対応を見据えた、機能拡張があるようです。 現段階で実装されている具体的な使い方については追って説明していきます。 尚、この章ではアニメーション時に使用した次の画像を使用しています。![]()
まずは、分割管理対象画像の読込を行う命令から。
| celload ファイル名, ウィンドウID, 画面モード | |||
| ファイル名 | 読み込む画像ファイル名を指定する | ||
| ウィンドウID | 読込先ウィンドウIDを指定する | ||
| 画面モード | 初期化する画面モード(0:フルカラーモード 1:パレットモード)を指定する | ||
1.buffer命令で「256色限定」か「1677万色」かの画面モードを選択してバッファ初期化という4つの処理が必要でしたが、今回の命令を使うことで
2.picload命令で画像ファイルをロード
3.gsel命令で描画対象ウィンドウをメインスクリーンに変更
4.gcopy命令でバッファに読み込んだ画像の一部または全部をコピー
1.celload命令で画面モードを選択してバッファ初期化を行い、画像ファイルをロード
2.gcopy命令でバッファに読み込んだ画像の一部または全部をコピー
と2つの処理だけで実現させられるようになります。 また、celload命令だとウィンドウIDを省略するか−1を指定することで 未使用の読込先バッファIDを指定することが出来ます。 celload命令で初期化されたウィンドウIDはstatに返る様になっているので、 下記のスクリプトのように直接指定することも当然出来ますが、 後々、読込先バッファを知る必要があることでしょうから、 未使用バッファを使用するようにした場合は別の変数に退避させるようにしましょう。 尚、現在選択しているスクリーンのウィンドウIDを指定した場合、 仮想バッファとして初期化してしまうために表示されなくなってしまいます。 コレはgsel命令で表示させようとしても表示できませんので注意が必要です。
1 2 3 |
celload "character.bmp" gmode 2 pos 10, 10 : gcopy stat, 0, 0, 32, 32 // 新しく初期化したバッファから読み込む |
続きまして、各セル情報を定義する命令について紹介します。
| celdiv ウィンドウID, 分割横幅, 分割高さ, X座標, Y座標 | |||
| ウィンドウID | セル分割対象ウィンドウIDを指定する | ||
| 分割横幅 | 1セルの横幅を指定する | ||
| 分割高さ | 1セルの高さを指定する | ||
| X座標 | セルの描画基点X座標を指定する | ||
| Y座標 | セルの描画基点Y座標を指定する | ||
| 0 | 1 | 2 | |
|---|---|---|---|
| 3 | 4 | 5 | |
1 2 3 4 |
celload "character.bmp", 1 celdiv 1, 32, 32 pos 10, 10 : gcopy 1 stop |
セル描画命令の最後に紹介するのはgcopy命令に代わる次の命令です。
| celput ウィンドウID, 分割, 横倍率, 縦倍率, 角度 | |||
| ウィンドウID | コピー元のセル画像が格納されたウィンドウIDを指定する | ||
| 分割 | 左上のセルを0としたセルナンバーを指定する | ||
| 横倍率 | 貼付時の横幅表示倍率を指定する | ||
| 縦倍率 | 貼付時の縦幅表示倍率を指定する | ||
| 角度 | 2πを360度としたラジアン角度を指定する | ||
1 2 3 4 5 6 7 8 9 10 11 12 13 |
celload "character.bmp", 1 celdiv 1, 32, 32 gmode 2 color 255, 255, 255 animation = 0, 1, 2, 1 zoom = 2 repeat redraw 0 boxf 10, 10, zoom * 32 + 10, zoom * 32 + 10 pos 10, 10 : celput 1, animation(cnt \ 4) + cnt / 8 \ 4 * 3, zoom, zoom redraw 1 wait 20 loop |