今回描く背景
難易度
今回は坂道でボールを転がす方法を解説していきます。決まった角度の坂であればその角度の向きにボールを向ければいいことになりますが、適当に描いた坂道を転がすにはどうすればよいでしょうか。重力の考え方を使えば意外と簡単なコードで書けてしまいますので是非マスターしてゲーム作りに活用してください。
ボールと坂道を用意する
まずはボールと坂道を用意しましょう。ボールはスクラッチで用意されているスプライトを活用します。スプライトを選ぶから、Ballを選択してください。最初から用意されているネコは使わないので削除してしまいましょう。
次に”描く”から新しいスプライトを用意してコスチュームに坂を書いていきます。以下のように直線ツールを使って描きましょう。スプライトの名前も”坂道”に変えておきます。
ボールを転がす
坂道に沿って右向きに進むようにする
ここからボールを転がしていきますが、まずは坂道にそって右向きにボールが転がっていくようにします。Ballのスプライトに以下のコードを書きます。重力については、アクションゲームでいつも使うコードになっています。ポイントは転がるのブロック定義ですが、ボールが少しずつジャンプしながら移動することで、常に坂道に沿って動くことができます。
ではこの段階で一度動きを確認してみましょう。以下のように1つ目の坂道を下っていって2つ目の坂道を登っていきます。
ボールを方向転換させる
ここまでで坂道に沿ってボールを動かすことはできましたが、2つめの坂道は本来左下に動くところを逆走してしまっています。この逆走を判断して方向転換させるのが今回の最大のポインントとなります。
この逆走を判断するために”高さリスト”というリストを作成します。この高さリストには常にボールの高さ(y座標)が入っていくようにします。そうするとリストの値がだんだん小さくなっていって(右下に落ちていくので)、どこかで逆転して大きくなるタイミングが出てきます。それはつまり逆走したという合図になります。この合図を拾って方向を転換させるのです。
以下のコードをボールのコードに追加します。
これで実際にボールを転がしてみましょう。以下のように転がすことができれば成功です。
いろいろな坂を転がしてみよう
これでコードは完成ですが、せっかくなのでいろいろな坂を転がしてみましょう。以下のようにフリーハンドで坂を書いて転がしてみてください。
適当に描いた坂道でも坂にそって転がっていくのが確認できます。
すべてのコード
すべてのコードはこちらから確認できます。