スタッフロールやパノラマ画面に用いられる画面のスクロール方法を解説します。
やり方はいろいろあると思いますが、ここではbltやlspを使います。 | ||
フリーゲームのスタッフロールでは、主に背景やスプライトを代わる代わる表示する方法が取られてますが、
NScripterでは映画のように上から下へ、右から左へスクロールするスタッフロールを作ることも可能です。
※staff.jpgをダウンロードしてimageフォルダ内に置いてください。 | ||
*define game *start btndef "image\staff.jpg" for %0=0 to 1920 blt 140,0,360,480,0,%0,360,480 wait 20 next ofscpy click end | ||
ダダーッとスタッフロールが流れ、最後にピタッと止まります。 使っている命令文は、全て今までに習ったものです。 「btndef」でスタッフロールの画像を読み込み、 「blt」で画像を1ドットずつ下にずらしながら表示していきます。 画像のY座標となる変数を「for」ループで回せば、 画面を書き換えるごとにY座標に1ドットずつ加算されることになります。 スクロールの速さは、「wait」と「step」の値によって変えられます。 最後に「ofscpy」を書けば完成です。 スプライト画像を用いても作れますが、あまりお勧めしません。 理由は、スタッフロールにしてはあまりにも重すぎるからです。 | ||
パノラマ画像はスタッフロールとは少し勝手が違います。
CG鑑賞モードなどでは、プレイヤーに画像を自由にスクロールさせる必要があります。 ここでは、スプライトとボタンを用いて左右にスクロールできるシステムを作ります。 ※haikei2.jpg,vec_l.jpg,vec_r.jpgをダウンロードしてimageフォルダ内に置いてください。 | ||
*define effect 10,10,1000 game *start lsp 0,":a/2,0,3;image\vec_l.jpg",10,215 lsp 1,":a/2,0,3;image\vec_r.jpg",580,215 lsp 2,":c;image\haikei2.jpg",0,0 print 10 *btnset trap off cell 0,0 cell 1,0 print 1 spbtn 0,1 spbtn 1,2 *btnloop btnwait %0 if %0==1 trap *btnset:goto *left if %0==2 trap *btnset:goto *right if %0==0 goto *btnloop if %0==-1 goto *btnloop *right if %1=-640 goto *btnset amsp 2,%1,0 print 1 dec %1 goto *right *left if %1=0 goto *btnset amsp 2,%1,0 print 1 inc %1 goto *left | ||
押した矢印の方向に画面がスクロールします。 一見長くて大変そうですが、ほとんど既に知っている命令文を使っています。 順を追って見ていけばそう難しくはありません。 まず、スプライトでスクロールさせたいパノラマ画像とボタン画像を表示します。 ボタンを選択することで左右のスクロール処理へとジャンプさせます。 *right、*left内の処理は、 スプライト画像を1ドットずつ横にずらして書き直しているだけです。 「amsp」はスプライト画像を移動させる命令です。 「スプライト番号」「移動させたいX座標、Y座標」を指定します。 そして画像の端に到達するか、クリックをすることでボタン選択へ戻ります。 一度ボタンを押すとセル1のままになるので「cell」でセル0に戻すことも忘れずに。 少し説明不足な気もしますが、ここまで来たら自力で読み取れるようにしましょう。 | ||
スクロール方法についてはあまり知られていないためか、
実際に使われているゲームはほとんど見たことがありません。 しかし工夫次第では、ここで紹介した使い道以外にも画期的な利用法があるかもしれません。 スクロールの速さはPCのスペックによって変わります。 特にスプライトを用いた場合は差が顕著に現れるようです。 次節は、時間制限についてです。 | ||