このブログテーマでは、スクラッチの初心者から上級者まで、ちょっとお役に立つ情報を不定期で紹介していきます。
スクラッチ講座、投稿記事のまとめはこちら(一分間スクラッチ講座 まとめ)でご参照ください。
前回は繰り返しとクローンを使って、ブロック崩し用のブロックを作成しました。今回はそのブロックにボールを当てて破壊、さらに当てたボールを跳ね返す動きを作ってみます。
下の動画は不定期配信の「ファイブボックス一分間スクラッチ講座」です。ご興味のある方は併せてご参照ください。
1,ボールのプログラム
ライブラリから「Ball」を選択します。
名前は任意ですが、サンプルでは「ボール」にしておきました。

ボールの移動プログラムを作成します。
旗が押されたとき
大きさを50%にする
x座標を 0 、y座標を -140 にする(発射位置)
-60度から60度に向ける(発射時の角度を乱数で指定)
ずっと以下の処理を繰り返す
5歩動かす(ボールの速度)
もしブロックに触れたら以下の処理を実行
メッセージ「げきは」を送って待つ
ブロック定義「はね返り」を作成し呼び出す ※「画面を再描画せずに実行する」にチェックで高速処理
もし端に着いたらはね返る

作成したブロック定義「はね返り」のスクリプトは以下のようになります。
定義「はね返り」
ブロックに触れたではない(ブロックから離れるまで)以下の処理を実行
-1歩ずつ動かす(ここが高速処理になり、入り込んだ分を一瞬で戻す)
(180 - 向き)度に向ける(反射の角度) ※垂直方向に移動している場合、反射角は180度-現在の向きになります 例えば、60度で進んでいた場合、跳ね返り直後は 180-60 で 120度になる

この処理は、ボールが進んでいる向きによって想定外の場所にはね返ってしまうことがあります。この部分の調整はまた次回行ってみます。
2,ブロックのプログラム
作成したブロックは撃破を受け取った時に削除されます
メッセージ「げきは」を受け取ったとき
ボールに触れていたら、このクローンを削除する
※すべてのクローンがメッセージを受け取るが、削除されるのはボールに当たっているクローンだけです。

これでいったんブロック崩しの形はできました。 侵入する角度によっては、想定外の跳ね返りになると思いますので、もう少し調整が必要です。
しょうとつ方向に応じた跳ね返り角度の指定はこちらの記事から。
ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
Comments