広告
Scratch(スクラッチ)を使って入門プログラムの定番、ブロック崩しを作っていきます。
ブロック崩しを通してたくさんのプログラムの組み合わせ方、キャラクターの移動方法、簡単な場面の切り替えなどを学んでいきます。
「Scratch(スクラッチ)でプログラミング入門」の応用編になりますので、まだ終えてない方はそちらを先にご覧ください。
今回はブロック崩しを作る為の大まかな流れだけを説明したいと思います。
ブロック崩しを作るポイントを挙げるとすると
・ボールの移動
・壁との当たり判定
・跳ね返りの角度計算
・自機の移動
・自機との当たり判定
・ブロックの表示
・ブロックとの当たり判定
こんなトコロではないでしょうか?
主なところを見ていきましょう!
ブロック崩しの肝の部分ですね!
これができれば8割完成したようなモノです。
まず移動角度と跳ね返り角度の計算ですが、これには入射角が何度で跳ね返りの角度は対称になるから・・・、
なんて事を考えるとけっこうハマるのでそんな事は考えません。
ここは「x」座標と「y」座標の増減のみで考えます。
まずは試しに「x」と「y」を同じずつ増やしてみましょう。
「x」が「0」なら「y」も「0」
「x」が「1」なら「y」も「1」
「x」が「2」なら「y」も「2」
「x」が「3」なら「y」も「3」
といった具合です。
そしてそこに点を打っていくと
こんな感じになりますよね。
これはどこからはじめても同じような結果になるので下の方から点を打ち始めると
こんな感じになります。
この時に決して
「原点をずれる直線はy = ax + bだからあ・・・。」
なんて中途半端な数学の知識を考えてはいけません。
難しく考えずにその時のボールの座標から同じように「x」と「y」を増加(減少)していったらどんな動きになるのかと考えます。
たとえば途中で「x」だけを減少させれば
折り返しができました!
こんなんでいいのか?と思うかもですが以外にそれっぽくなるのでご安心ください。
もちろんブロックの角に当たった場合や自機を動かしながら跳ね返した場合などを正確にやりたい場合はもっと工夫が必要ですが今回はこの「x」「y」の増減のみで跳ね返しをしたいと思います。
ボールの移動にはボールの速度を表す変数を用意してそれを座標に加える事でボールを移動していきます。
「ボールのx座標 + ボールのx増加量」
「ボールのy座標 + ボールのy増加量」
この増加量をひたすら加え続けていきます。
反対の方向に移動したい時はこの増加量の+-を入れ替えます。
「壁の当たり判定」は「ボールの座標が壁の座標を超えた時」に跳ね返します。
こんな感じです。
「自機の当たり判定」は「~に触れた時」ブロックを使って自機に触れた時に跳ね返します。
そして壁または自機に当たった時にボールがめり込んで、はまり込まないようにボールの座標を少し直してから跳ね返してあげます。
これである程度それっぽく跳ね返してくれます。
広告
ブロックの当たり判定も「~に触れた時」ブロックを使って触れた時に「yの増加量」を変えてあげればなんとなく跳ね返しくれます。
しかしこれだけだとちょっと単調になってしまうので今回は当たった時にそのブロックとボールの角度を調べるブロックを作ってその当たった場所によって跳ね返しの方向を変化させたいと思います。
これによりもう少し自然な跳ね返しをする事ができます。
正確な跳ね返りではないですが入門プログラムという事で今回はこちらでいきたいと思います。
「クローン」を使ってたくさんのブロックを並べます。
「クローン」されるたびにブロックを表示するx座標を少しずつずらしていって1列並んだトコロでx座標を戻して、y座標をずらし再びx座標をずらしていくみたいな手順でたくさんのブロックを並べていきます。
それでは次回より実際にブロックを組んでいってみましょう!
広告
Copyright 2016 K.N/petitetech.com