Scratch2(スクラッチ2)で壁打ちゲームを作ろう(6回目)
myway@おじさんです。
前回の続きで、ボールが当ったとき、はね返える向きを変える内容について説明したいと思います。
動作環境について
OS:MAC OS X(Windowsでも操作はほとんど変わりません)
エディタ:Scratch offline editor(ver.456)
1.準備
前回保存したプロジェクトを開いて下さい。
画面右上の「ファイル」をクリックしてから、「ひらく」をクリックして、プロジェクトを開いて下さい。
2.どこから当ったのか?
まずは、「Apple」に「Ball」が、どの方向から当ったのかを調べる必要があります。
では、どのようにして調べるのか?
それは、「Ball」が「Apple」に当った時、「Ball」から見て「Apple」がどの方向にあるかを調べることでわかります。
「もしAppleにふれたなら」ブロックと、「向き」ブロックを使えばできそうです。
下の図を見てください。
「Apple」は丸に近い形をしていますので、わかりやすくするために、緑の線で書いています。
この緑の四角の中に、「Ball」が入ってきたらはね返えるスクリプトを動かすとイメージしてください。
次に、青い線ですが、どの方向から当ったかを判断する線として見てください。
例えば、「Ball」が1の方向から当ったら、上にはね返り、2の方向から当ったら右へはね返ります。
ここで思い出して欲しいのですが、前回、前々回で書いた、「横のはね返り」と「縦のはね返り」です。
1または3の方向から当った場合は、「横のはね返り」
2または4の方向から当った場合は、「縦のはね返り」
をすれば良い、という事になります。
上の内容をふまえて、スクリプトを作ります。
3.「Ball」のスクリプト
「Ball」のスクリプトです。
変更したのは2点です。
(1)へんすう「Ballのむき」を追加
(2)「もしAppleにふれた=0」ブロックの中のスクリプトを変更
(1)に関しては、そのままですが、(2)に関して、もう少し説明します。
・「Ballのむきをむきにする」ブロック
このブロックは、はね返える前の「Ball」のむきをへんすうに保存しています。
・「Appleへむける」ブロック
このブロックは、「Apple」から見て「Ball」がどこに当ったかを判断するため、一時的に「Apple」に方向を向けています。
・「もしむき>45かつむき<136またはむき>-136かつむき<-45」ブロック
このブロックで、「Ball」がはね返える向きを判定しています。
ここで、再度、図を見てください。
「むき>45かつむき<136」が「図の4」の範囲、「むき>-136かつむき<-45」が「図の2」の範囲になるのがわかりますか?
4.計算してみる
下の図を見てください。
例えば、こういう動きだった場合を考えます。
図に角度を書いてみます。
1は、「45ど」で「Apple」に当たります。
2で、「Ball」を「Apple」へむかせます。真横に当ったので「90ど」となります。
「90ど」で当ったので、「360-むき」ブロックが動きます。
向きの計算は、「360-45=315」となります。
ちなみに「315ど」は「-45ど」と同じむきです。
(Scratchでは、むきの変換を自動で行ってくれるので、計算した値をそのまま使えます。)
3は、はね返った後です。
このように、スクリプトに実際の値を当てはめてみると、正しいか、まちがっているかがわかりやすくなります。
余談ですが、今回のスクリプトを使えば、モンスタースト○イクみたいなゲームが作れるかも知れません。
今回はここまでです。
作ったら、必ず、「ほぞん」をするように心がけて下さい。
それと、今回も動画がありますので、よければ、参考にしていただければと思います。
次回は、リンゴだけでなく、オレンジやバナナなど、他の障害物を置いてみたいとおもいます。
最後まで読んで頂いてありがとうございます。
皆さんに少しでもお役に立てれば幸いです。
<<壁打ち(5回目) | 壁打ち(7回目)>> |