一分間スクラッチ講座|スクロール処理③ クローンでスクロールで動く足場を作る
前回までの記事では、スクラッチでスクロール処理を作り、キャラクターが横に移動しているように見せる方法を作りました。
実際には、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の個別指導のオンラインレッスンを行っています。
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!