見出し画像

一分間スクラッチ講座|スクロール処理③ クローンでスクロールで動く足場を作る

前回までの記事では、スクラッチでスクロール処理を作り、キャラクターが横に移動しているように見せる方法を作りました。

実際には、Cat自身を左右に大きく動かすのではなく、変数「スクロールX」を使って、足場や障害物の位置を動かしています。

今回は、その足場をクローンで増やし、複数の足場を配置できるようにしていきます。

こちらはYoutube、ファイブボックス一分間スクラッチ講座です。
もしよろしければ、一緒にご参照ください。


これまでに作った内容

まず、今回の前提となるスクリプトを確認しておきます。
Catには、次のような処理を作っています。

上向き矢印キーを押したときにジャンプする
左右キーを押したときに、変数「スクロールX」を変える
Cat自身は、基本的に画面中央付近にいる

ここで大事なのは、Catを直接右や左に移動させているわけではないということです。
右に進んでいるように見えるときは、足場や背景の方を左に動かしています。

つまり、Catが動くのではなく、まわりのステージが動く という考え方です。


足場側の基本のしくみ

足場のスプライトには、次のような考え方でスクリプトを作っています。
まず、「このスプライトのみ」にチェックを入れて、変数「初期位置X」を用意します。

この変数は、足場が本来どのX座標に置かれているかを表すための変数です。
たとえば、ある足場を最初にX座標100の位置に置きたい場合は、
初期位置X = 100
としておきます。

そして、ずっとの中で、足場のX座標を次のように決めます。

x座標 = 初期位置X + スクロールX

このようにすると、Cat側で「スクロールX」の値が変わったときに、足場の位置もそれに合わせて動くようになります。


変数:初期位置X は「このスプライトのみ」にチェックを入れて作りました。
この設定にしておくと、クローンごとに別々の値を持つことができます。

たとえば、3つの足場を作る場合、

1つ目の足場:初期位置X = 200
2つ目の足場:初期位置X = 400
3つ目の足場:初期位置X = 600

というように、それぞれ違う位置を覚えさせることができます。

もし「すべてのスプライト用」の変数にしてしまうと、すべてのクローンが同じ値を使ってしまい、思ったように別々の位置に配置できません。


複数のコスチュームを用意する

今回は、足場の形をいくつか用意しておきます。
たとえば、

  • 横長の足場

  • 短い足場

  • 縦長の障害物

のように、複数のコスチュームを作っておくとバリエーション性の高いステージができます。

色で当たり判定を取っている場合は、当たり判定に使っている部分の色をそろえておきましょう。
コスチュームごとに色が変わってしまうと、ジャンプや着地の判定がうまく動かなくなることがあります。


本体とクローンの役割を分ける

次に、足場のスクリプトをクローン用に変更していきます。
ここで考え方を分けます。

本体
→ クローンを作るための管理役

クローン
→ 実際に画面に表示されて動く足場

このように分けると、整理しやすくなります。


本体側の処理

まず、本体側では次のようにします。
旗が押されたとき、本体は表示しません。

旗が押されたとき
隠す

本体は、あくまでクローンを作るための元になるスプライトです。
実際に画面に表示するのは、クローンの方です。
そのため、最初に「隠す」を入れておくのが基本です。


クローンされたときの処理

クローンが作られたら、今度は表示します。

クローンされたとき
表示する
ずっと
  x座標を 初期位置X + スクロールX にする

本体は隠していますが、クローンは表示したいので、「クローンされたとき」の最初に「表示する」を入れます。

そして、ずっとの中でX座標を更新します。

これにより、スクロールXの値が変わるたびに、足場も一緒にスクロールして見えるようになります。


ブロック定義を使うと作りやすい

足場を1つだけ作るなら、毎回同じような処理を書いても問題ありません。

しかし、足場をたくさん作る場合は、同じ処理を何度も書くことになります。

そこで便利なのが、ブロック定義です。
今回は、次のようなブロックを作ります。

クローン X Y コスチューム

引数は3つです。

  • X →  足場の初期位置X

  • Y →  足場のY座標

  • コスチューム →  どの形の足場にするか

このようにしておくと、1つのブロックで、位置と見た目を指定してクローンを作れるようになります。

作成したブロック定義の中には、次の処理を入れます。

定義 クローン X Y コスチューム
初期位置X を X にする
y座標を Y にする
コスチュームを コスチューム にする
自分自身のクローンを作る

ポイントは、クローンを作る前に、必要な情報を指定しておくことです。
クローンは、作られた瞬間の状態を引き継ぎます。
そのため、

  • 初期位置X

  • Y座標

  • コスチューム

を先に指定してから、「自分自身のクローンを作る」を実行します。


実際にクローンを作る

あとは、旗が押されたときに、作りたい数だけブロック定義を使います。

たとえば、次のようにします。

旗が押されたとき
隠す
クローン 200 -50 1
クローン 400 50 2
クローン 600 -50 3

この場合、

  • 1つ目のクローン →  X座標 200、Y座標 -50、コスチューム1

  • 2つ目のクローン →  X座標 400、Y座標 50、コスチューム2

  • 3つ目のクローン →  X座標 600、Y座標 -50、コスチューム3

という意味になります。

ここを間違えると、位置や見た目が思った通りにならないので注意しましょう。


完成イメージ

ここまで作ると、複数の足場が同時にスクロールするようになります。

Catが右に進むと、スクロールXの値が変わり、それに合わせて複数の足場がまとめて動きます。

これで、1つの足場だけではなく、ステージ全体を作っていく準備ができました。


今回のポイント

今回は、スクロールする足場をクローンで増やす方法を作りました。

ポイントは次の3つです。

まず、変数「初期位置X」は「このスプライトのみ」で作ります。
これにより、クローンごとに違う位置を持つことができます。

次に、本体とクローンの役割を分けます。
本体は隠して、クローンを作る役割にします。
実際に表示して動かすのはクローンです。

最後に、ブロック定義を使って、X座標、Y座標、コスチュームを指定できるようにします。
これにより、足場を増やす作業がとても楽になります。


次回予告

これで複数の足場を作ることができました。

ただし、このままだと、画面の端に足場が張り付いて見えてしまうことがあります。

次回は、この問題を修正して、より自然なスクロールになるようにしていきます。


ファイブボックス一分間スクラッチ講座 の記事はこちらでまとめてあります。


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

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

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

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