プログラミングテクニック

【スクラッチ】ボールの跳ね返り方4選(ピンポン・ブロック崩しゲーム)

ピンポンゲームやブロック崩しなどボールを使ったゲームでは、パドルを使ってボールを跳ね返すのが特徴ですよね。

スクラッチでプログラミングするときに、ボールの跳ね返り方について知りたいという人がとても多いです。

こちらでは、スクラッチのプログラミングでボールの跳ね返り方を4つ紹介します。

  • ランダムでボールを跳ね返す作り方
  • 入射角と同じ角度(反射角)でボールを跳ね返す作り方
  • 入射した方向へボールを跳ね返す作り方
  • パドルに当たった位置からランダムでボールを跳ね返す作り方
スポンサーリンク

ランダムでボールを跳ね返す作り方

(プロジェクトの中身を確認する)

こちらが、「ランダムでボールを跳ね返す」プロジェクトです。

左右矢印キーで上下のパドルが左右に動き、上下矢印キーで左右のパドルが上下に動きます。

ランダムでボールを跳ね返すプログラム

ランダムでボールを跳ね返すプログラムは、スプライト「ピンポン玉」のプログラムに作っています。

(画像をクリックすると大きくなります。)

  • パドル(上)に触れたら、「135から225までの乱数」度に向ける
  • パドル(下)に触れたら、「-45から45までの乱数」度に向ける
  • パドル(左)に触れたら、「45から135までの乱数」度に向ける
  • パドル(右)に触れたら、「-45から-135までの乱数」度に向ける

(画像をクリックすると大きくなります。)

こちらの例では、乱数の値をこのように設定していますが、ボールを跳ね返したい角度の範囲は、自由に設定してください。

ただし、あまり広角すぎると、ボールがパドルにくっついて離れない状態になることがありますので、注意しましょう。

入射角と同じ角度(反射角)でボールを跳ね返す作り方

(プロジェクトの中身を確認する)

こちらが、「入射角と同じ角度(反射角)でボールを跳ね返す」プロジェクトです。

入射角と同じ角度(反射角)でボールを跳ね返します。

入射角と同じ角度(反射角)でボールを跳ね返すプログラム

(画像をクリックすると大きくなります。)

こちらが、入射角と同じ角度(反射角)でボールを跳ね返すプログラムです。

(画像をクリックすると大きくなります。)

スプライト「パドル(上)」「パドル(下)」の反射角(=入射角)の求め方は、以下になります。

反射角=180-「向き」ブロック

(画像をクリックすると大きくなります。)

スプライト「パドル(左)」「パドル(右)」の反射角(=入射角)の求め方は、以下になります。

反射角=-1 × 「向き」ブロック

入射角と同じ角度(反射角)でボールを跳ね返すプログラムは、規則性のある動きをするので、面白みに欠ける場合があります。

入射した方向へボールを跳ね返す作り方

(プロジェクトの中身を確認する)

こちらが、「入射した方向へボールを跳ね返す」プロジェクトです。

入射した方向へボールを跳ね返します。

入射した方向へボールを跳ね返すプログラム

(画像をクリックすると大きくなります。)

こちらが、入射した方向へボールを跳ね返すプログラムです。

(画像をクリックすると大きくなります。)

スプライト「パドル(上)」「パドル(下)」「パドル(右)」「パドル(左)」とも、反射した向きの求め方は、以下になります。

反射した向き=「向き」ブロック+180

こちらは、正直ピンポンゲームやブロック崩しゲームには向きません。

パドルに当たった位置からランダムでボールを跳ね返す作り方

(プロジェクトの中身を確認する)

こちらが、「パドルに当たった位置からランダムでボールを跳ね返す」プロジェクトです。

パドルに当たった位置からランダムでボールを跳ね返します。

パドルに当たった位置からランダムでボールを跳ね返すプログラム

(画像をクリックすると大きくなります。)

こちらが、パドルに当たった位置からランダムでボールを跳ね返すプログラムです。

こちらでは、パドルに当たる位置を以下の3つの条件で分けています。

  • ピンポン玉のx座標(y座標)とパドルのx座標(y座標)が同じとき
  • ピンポン玉のx座標(y座標)がパドルのx座標(y座標)より大きいとき
  • ピンポン玉のx座標(y座標)がパドルのx座標(y座標)より小さいとき

(画像をクリックすると大きくなります。)

こちらは、パドル(上)に触れたときのプログラムです。

ピンポン玉のx座標とパドルのx座標が同じときの角度は、以下で求めています。

角度=180-「向き」ブロック

これは、入射角=反射角の求め方でしたよね。

ピンポン玉がぴったりパドルの中心に来たときは、同じ角度で跳ね返します。

【パドル(上)(下)】角度=180-「向き」ブロック
【パドル(右)(左)】角度=-1 × 「向き」ブロック

「パドル(下)」「パドル(右)」「パドル(下)」もパドルの中心に来たときは、同じ角度で跳ね返すようにプログラミングしています。

ピンポン玉のx座標がパドルのx座標より「大きいとき」と「小さいとき」は、パドルの中心から左右にランダムの角度を設定しています。

ボールを跳ね返したい角度の範囲は、自由に設定してもOKですが、こちらもあまり広角すぎると、ボールがパドルにくっついて離れない状態になることがありますので、注意しましょう。

(画像をクリックすると大きくなります。)

「パドル(下)」「パドル(右)」「パドル(下)」もそれぞれに合わせた角度で調整しています。

まとめ

今回、スクラッチのプログラミングでボールの跳ね返り方を4つ紹介しました。

工夫次第で色々なボールの跳ね返し方があります。