広告

【Scratch】【ブロック崩し】1日目 ブロック崩しの考え方

2022.10.10更新

【Scratch】【ブロック崩し】のタイトル画像になります

Scratch(スクラッチ)を使って入門プログラムの定番、ブロック崩しを作っていきます。

ブロック崩しを通してたくさんのプログラムの組み合わせ方、キャラクターの移動方法、簡単な場面の切り替えなどを学んでいきます。

「Scratch(スクラッチ)でプログラミング入門」の応用編になりますので、まだ終えてない方はそちらを先にご覧ください。

ブロック崩しの考え方

今回はブロック崩しを作る為の大まかな流れだけを説明したいと思います。

ブロック崩しを作るポイントを挙げるとすると

・ボールの移動

・壁との当たり判定

・跳ね返りの角度計算

・自機の移動

・自機との当たり判定

・ブロックの表示

・ブロックとの当たり判定

こんなトコロではないでしょうか?

主なところを見ていきましょう!

ボールの移動と跳ね返り

ブロック崩しの肝の部分ですね!

これができれば8割完成したようなモノです。

まず移動角度と跳ね返り角度の計算ですが、これには入射角が何度で跳ね返りの角度は対称になるから・・・、

なんて事を考えるとけっこうハマるのでそんな事は考えません。

ここは「x」座標と「y」座標の増減のみで考えます。

「x」と「y」を同じずつ増減

まずは試しに「x」と「y」を同じずつ増やしてみましょう。

「x」が「0」なら「y」も「0」

「x」が「1」なら「y」も「1」

「x」が「2」なら「y」も「2」

「x」が「3」なら「y」も「3」

といった具合です。

そしてそこに点を打っていくと

座標上で原点からxとyを均等に増加した場合の結果画像になります

こんな感じになりますよね。

これはどこからはじめても同じような結果になるので下の方から点を打ち始めると

座標上で原点より下の方からxとyを均等に増加した場合の結果画像になります

こんな感じになります。

この時に決して

「原点をずれる直線はy = ax + bだからあ・・・。」

なんて中途半端な数学の知識を考えてはいけません。

難しく考えずにその時のボールの座標から同じように「x」と「y」を増加(減少)していったらどんな動きになるのかと考えます。

たとえば途中で「x」だけを減少させれば

座標上で原点より下の方からxとyを均等に増加して途中からxを減少させた場合の結果画像になります

折り返しができました!

こんなんでいいのか?と思うかもですが以外にそれっぽくなるのでご安心ください。

もちろんブロックの角に当たった場合や自機を動かしながら跳ね返した場合などを正確にやりたい場合はもっと工夫が必要ですが今回はこの「x」「y」の増減のみで跳ね返しをしたいと思います。

ボールの移動

ボールの移動にはボールの速度を表す変数を用意してそれを座標に加える事でボールを移動していきます。

「ボールのx座標 + ボールのx増加量」

「ボールのy座標 + ボールのy増加量」

この増加量をひたすら加え続けていきます。

反対の方向に移動したい時はこの増加量の+-を入れ替えます。

壁と自機の当たり判定

「壁の当たり判定」は「ボールの座標が壁の座標を超えた時」に跳ね返します。

【Scratch】【ブロック崩し】において画面端の当たり判定を表した画像になります

こんな感じです。

「自機の当たり判定」は「~に触れた時」ブロックを使って自機に触れた時に跳ね返します。

そして壁または自機に当たった時にボールがめり込んで、はまり込まないようにボールの座標を少し直してから跳ね返してあげます。

【Scratch】【ブロック崩し】において当たり判定の時に対象物にめり込まないように座標を修正した画像になります

これである程度それっぽく跳ね返してくれます。

広告

ブロックの当たり判定

ブロックの当たり判定も「~に触れた時」ブロックを使って触れた時に「yの増加量」を変えてあげればなんとなく跳ね返しくれます。

しかしこれだけだとちょっと単調になってしまうので今回は当たった時にそのブロックとボールの角度を調べるブロックを作ってその当たった場所によって跳ね返しの方向を変化させたいと思います。

【Scratch】【ブロック崩し】においてブロックにぶつかった時の跳ね返り角度を表した画像になります

これによりもう少し自然な跳ね返しをする事ができます。

正確な跳ね返りではないですが入門プログラムという事で今回はこちらでいきたいと思います。

たくさんのブロックを並べる

「クローン」を使ってたくさんのブロックを並べます。

「クローン」されるたびにブロックを表示するx座標を少しずつずらしていって1列並んだトコロでx座標を戻して、y座標をずらし再びx座標をずらしていくみたいな手順でたくさんのブロックを並べていきます。

それでは次回より実際にブロックを組んでいってみましょう!

次回

2日目 ボールの移動と反射

広告

Copyright 2016 K.N/petitetech.com