見出し画像

ファイブボックス 一分間スクラッチ講座 | #010 スクロール基本編

今回は、スクラッチでよく使われる「スクロール処理」について解説します。

スクロール処理とは、プレイヤー自身を大きく動かすのではなく、
背景やブロックなど、まわりのスプライトを反対方向に動かすことで、プレイヤーが進んでいるように見せる方法です。

たとえば、右向きキーを押したときにプレイヤーを右へ動かすのではなく、
まわりのブロックや背景を左へ動かします。

すると、画面上ではプレイヤーが右へ進んでいるように見えます。

今回の完成作品も共有しますので、動きのイメージがつかみにくい方は、まず完成作品を確認してみてください。

また、下の動画は不定期配信の
「ファイブボックス 一分間スクラッチ講座」です。
ご興味のある方は、あわせてご覧ください。



1. プレイヤーのプログラム

まずは、操作するキャラクターを用意します。
ここでは、このキャラクターをプレイヤーと呼びます。

今回は、以前作成したジャンプの作品に、スクロール用のプログラムを追加していきます。

ジャンプの動きから作りたい場合は、前回までの記事もあわせてご参照ください。


2. スクロール用の変数を用意する

まず、変数を2つ用意します。

スクロールX

プレイヤーがどれだけ移動したことにするかを管理する変数です。
実際にはプレイヤーのx座標は大きく動かさず、
このスクロールXの値を使って、まわりのスプライトを動かします。

スピードX

x方向の移動量を管理する変数です。
この数値が大きいほど、スクロールの動きが速くなります。
今回は例として、5に設定します。

スクロールで使用する変数

3. プレイヤーの初期設定

旗が押されたとき、まずプレイヤーの初期設定をします。

  • 大きさを50%にする

  • 回転方法を「左右のみ」にする

  • 変数「スクロールX」を0にする

  • 変数「スピードX」を5にする

プレイヤーの大きさは、以前のジャンプ作品より少し小さくしています。
また、回転方法を「左右のみ」にしておくことで、左を向いたときにキャラクターが上下逆さまにならないようにします。


4. 左右のキーを押したとき

右向き矢印キーが押されたときは、プレイヤー自身のx座標は変えません。
代わりに、変数スクロールXを更新します。

右へ進んでいるように見せたいので、まわりのスプライトを左へ動かす必要があります。
あわせて、プレイヤーを右向きにして、走るアニメーションに見えるようにコスチュームを変更します。

  • 右向き矢印キーが押された

    • スクロールXを「-スピードX」ずつ変える

    • 90度、右向きにする

    • 次のコスチュームにする

左向き矢印キーが押されたときも、同様にプレイヤー自身のx座標は変えずに、スクロールXを更新します。

  • 左向き矢印キーが押された

    • スクロールXを「スピードX」ずつ変える

    • -90度、左向きにする

    • 次のコスチュームにする

キャットのプログラム

5. まわりのスプライトを動かす

次に、プレイヤー以外のスプライトを動かします。

今回は、以前の「天井跳ね返り」の検証で使ったブロックを使用します。
このスプライトの名前を、ここではブロック1としておきます。

プレイヤーは画面上でほとんど動かさず、ブロックなどのスプライトを動かすことで、プレイヤーが進んでいるように見せます。

ブロック1には、変数初期位置Xを用意します。

この変数を作るときは、「このスプライトのみ」にチェックを入れておきます。
「このスプライトのみ」にしておくと、クローンを作ったときに、それぞれのスプライトやクローンが別々の値を持てるようになります。
スクロールゲームでは、ブロックや足場を複数並べることが多いため、
それぞれの初期位置を個別に持たせることが大切です。


6. ブロック1のプログラム

ブロック1では、まずゲーム開始時の位置を記録します。

旗が押されたとき、
変数:初期位置X を100にします。

これは、ゲーム開始時のブロック1のx座標です。
そのあと、ずっと次の処理を実行

x座標を「初期位置X + スクロールX」にする

これにより、スクロールXの値が変わるたびに、
ブロック1の位置も変わります。

たとえば、右向きキーを押してスクロールXがマイナス方向に変わると、
ブロックは左へ動きます。

その結果、プレイヤーが右へ進んでいるように見えます。


7. 今回の問題点

ここまでで、スクロールの基本の動きは完成しました。
ただし、作成したサンプルには1つ問題があります。

前回までできていた「天井跳ね返り」の動きが、うまく動かなくなっています。

これは、今回追加したコスチューム変更が原因で発生している問題です。
次回は、この問題を解決するところから解説していきます。


ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。

ご興味のある方は、当サイトのオンラインレッスンページから、
無料体験授業へお問い合わせください。


いいなと思ったら応援しよう!

ファイブボックス よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!