提供:Japanese Scratch-Wiki
このきじは ひらがなでよめます。ひらがなでよむ
ここでは、横スクロールの方法を解説する。横スクロールとは、スプライトではなく背景を動かすことによって、スプライトが動いているように見せるもので、プラットフォーマーなどに利用されている。
方式
いくつかの方式がある。
- 画面外描画 - 背景スプライトを作成し、そのx座標を変化させる。Scratchのスプライトは原則として完全に画面外に出ることができないため、隠す処理が必要。
- 多スプライト - Why!?プログラミングの「カエルを家に帰せ」が詳しい。
- 1スプライト - この記事で紹介する。
- 分割 - 背景を細かく分割する。分割単位より細かく移動できない。
- ペン描画 - 移動ごとに再描画する。100%penのスクロール式プラットフォーマーはすべてこの方法。
1スプライトの画面外描画方式
ここでは、1スプライト画面外描画方式の横スクロールを作成する方法を説明する。縦スクロールの場合はx座標をy座標と読み替え、数値を調節すること。
コントロール
横スクロールではx座標ブロックの代わりに変数を使用する。「x」という変数を作成する。そして、以下のようなスクリプトを置く。(どこでもよい。)
@greenFlag が押されたとき::hat events [x v]を[0]にする ずっと もし <(右向き矢印 v) キーが押された>なら [x v]を(10)ずつ変える end もし <(左向き矢印 v) キーが押された>なら [x v]を(-10)ずつ変える end end
これは、左右キーでスプライトを操作するときのスクリプトの動きブロックを変数への代入に置き換えただけだ。
背景
ステージは動かせないため、「背景」という名前のスプライトを使う。480x360のコスチュームを数個用意する。また、クローンを内部で使用するため、個数は300以下にしないといけない。クローンの識別用に、このスプライトのみの変数「クローンID」を作る。また、あとでコスチュームを追加しやすいように変数「コスチュームの個数」を作り、コスチュームの個数を入れる。(自動化もできる。)ここではコスチューム4個とする。
@greenFlagが押されたとき::events hat x座標を(0)、y座標を(0)にする // 初期化 コスチュームを(() + (1))にする // 最初のコスチュームにする [コスチュームの個数 v]を[4]にする [最背面 v]に移動する::looks [クローンID v]を[0]にする (コスチュームの個数)回繰り返す 次のコスチュームにする [クローンID v]を(1)ずつ変える [自分自身 v]のクローンを作る end [クローンID v]を[0]にする 移動の処理::custom クローンされたとき [最背面 v]に移動する::looks 移動の処理::custom 定義 移動の処理 ずっと x座標を(((クローンID)*(480)) - ((x)を((コスチュームの個数)*(480))で割った余り))にする もし<(x座標)>[-465]>なら 表示する でなければ 隠す end end