一分間スクラッチ講座 | クリックした場所にボールを投げる方法|マウスポインターの方向へ飛ばそう
前回は、スペースキーを押すと、ピッチャーからボールが右方向へ山なりに飛ぶプログラムを作りました。
今回はそのプログラムを少し改造し、マウスでクリックした方向へボールを投げられるようにします。
基本的な仕組みは前回と同じです。
変更するポイントは、次の2つです。
スペースキーではなく、マウスのクリックで投球する
ボールをマウスポインターの方向へ向ける
Youtubeショート動画「ファイボックス1分間スクラッチ講座」でもこの内容を紹介していますので、併せてご参照ください。
1.ピッチャーの動きを変更する
前回は、「スペースキーが押されたとき」から投球モーションを始めました。
今回は、ステージ上の好きな場所をクリックしたときに投球します。
ただし、Scratchには「マウスがクリックされたとき」というハットブロックはありません。
そこで、緑の旗が押された後に「ずっと」を使い、マウスが押されているかを繰り返し確認します。
ピッチャーのプログラムを、次のように変更します。
「緑の旗が押されたとき」
ずっと
もし「マウスが押された」なら
コスチュームを「pitcher-a」にする
3回繰り返す
0.1秒待つ
次のコスチュームにする
メッセージ「投げる」を送る

「ずっと」の中で「マウスが押された」を調べることで、ステージ上のどこをクリックしても投球を開始できます。
クリックされた後に行う処理は、前回作成した投球モーションと同じです。
そのため、コスチュームの切り替え部分と、メッセージ「投げる」を送る部分は、そのまま複製して利用できます。
2.クリックの長押しに注意する
今回のプログラムでは、「ずっと」の中でマウスの状態を確認しています。
そのため、マウスボタンを長く押し続けると、「マウスが押された」が繰り返し成立し、連続して投球することがあります。
1回のクリックで1回だけ投げたい場合は、メッセージ「投げる」を送った後に、次の処理を追加します。
「マウスが押されていないまで待つ」

これにより、マウスボタンを離すまで次の投球が始まらなくなります。
連続投球を使いたい場合は、追加しなくても構いません。
3.ボールのプログラムを変更する
ボールの動きも、前回作成したプログラムを利用します。
ゲーム開始時にボールを隠す処理は、前回と同じです。
「緑の旗が押されたとき」
隠す

次に、メッセージ「投げる」を受け取ったときのプログラムを変更します。
「投げるを受け取ったとき」
重力を5にする
「Pitcher」へ行く
y座標を80ずつ変える
「マウスのポインター」へ向ける
表示する
端に触れたまで繰り返す
20歩動かす
y座標を重力ずつ変える
重力を-0.5ずつ変える
隠す

前回から大きく変わるのは、次の2か所です。
「マウスのポインターへ向ける」を追加する
「x座標を20ずつ変える」を「20歩動かす」へ変更する
マウスポインターの方向へ向ける
ボールをピッチャーの位置へ移動し、y座標を補正した後に、「マウスのポインターへ向ける」を実行します。
これにより、ボールはクリックした位置がある方向を向きます。
ただし、このブロックは、ボールの向きを変えるだけです。
向きを変えただけでは移動しないため、その後に「20歩動かす」を使います。
「x座標を変える」と「歩動かす」の違い
前回のプログラムでは、「x座標を20ずつ変える」を使いました。
このブロックを使うと、ボールの向きに関係なく、必ず右方向へ移動します。
今回は、クリックした位置によって投げる方向を変えたいので、「20歩動かす」を使います。
「20歩動かす」は、スプライトが現在向いている方向へ移動するブロックです。
そのため、処理の順番は次のようになります。
マウスポインターへ向ける
向いている方向へ20歩動かす
これで、クリックした場所の方向へボールが進みます。
20という数値を大きくすると、ボールの移動速度が速くなります。小さくすると、ゆっくり移動します。
重力で山なりの動きを加える
ボールがマウスポインターの方向へ進んでいる間も、前回と同じ重力の処理を行います。
y座標を重力ずつ変える
重力を-0.5ずつ変える
投げ始めたときの重力は5です。
最初はy座標が増えるため、ボールが上方向へ進みます。
重力がプラスの間は上昇し、0を下回ると落下します。
そのため、ボールはクリックした場所へ一直線に進むのではなく、重力の影響を受けながら山なりに飛びます。
ボールの軌道の調整
「マウスのポインターへ向ける」を実行した時点では、ボールはクリックした位置の方向を向いています。
しかし、その後に重力によってy座標が変化するため、距離が遠い場合は、クリックした場所より少し下を通過することがあります。
軌道を調整したい場合は、次の数値を変更してみてください。
重力の初期値
重力を減らす量
1回に進む歩数
ボールを高く投げたい場合は、重力の初期値を大きくします。
ボールを速くしたい場合は、「20歩動かす」の数値を大きくします。
落下を緩やかにしたい場合は、「重力を-0.5ずつ変える」を「-0.2」などに変更します。
今回のまとめ
今回は、クリックした場所へ向かってボールを投げる方法を確認しました。
ポイントは次の通りです。

今回の仕組みを使うと、クリックした場所を狙う投球ゲームや、砲台、弓矢、シューティングゲームなどへ応用できます。
数値を変えながら、投げる速さや軌道を調整してみてください。
ファイブボックス一分間スクラッチ講座 の記事はこちらでまとめてあります。
ファイブボックスでは、ScratchやUnityを使ったプログラミングの個別オンラインレッスンを行っています。
ご興味のある方は、ファイブボックスのオンラインレッスンページから、無料体験授業へお問い合わせください。
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!