一分間スクラッチ講座 | ボールを山なりに投げる方法|重力を使って自然な軌道を作ろう
今回は、Scratchでボールを山なりに投げる方法を紹介します。
スペースキーを押すとピッチャーが投球モーションを行い、その後、手元からボールが飛び出すプログラムを作ります。
ボールを山なりに動かすポイントは、変数を使って上下方向の移動量を少しずつ変えることです。
不定期更新のYoutubeショート動画「一分間スクラッチ講座」も併せてご参照ください。
1.ピッチャーを用意する
画面右下の「スプライトを選ぶ」から画像ライブラリーを開き、「Pitcher」を追加します。

追加したピッチャーは、ステージの左下付近に配置します。
位置の目安は次の通りです。
x座標:-160付近
y座標:-90付近
ステージの左側はx座標がマイナスになるため、左下に配置する場合は「-160」付近になります。
2.投球モーションを作る
Pitcherには、投球動作を表す複数のコスチュームが用意されています。
スペースキーが押されたときにコスチュームを順番に切り替え、投球モーションを作ります。
ピッチャーに、次のプログラムを作成します。
「スペースキーが押されたとき」
コスチュームを「pitcher-a」にする
3回繰り返す
0.1秒待つ
次のコスチュームにする
メッセージ「投げる」を送る

最初にコスチュームを「pitcher-a」に戻すことで、毎回1番目のコスチュームから投球モーションを開始できます。
その後、0.1秒ごとにコスチュームを切り替えます。
投球モーションが終了したら、メッセージ「投げる」を送ります。このメッセージをボール側で受け取り、ボールの移動を開始します。
3.ボールを用意する
続いて、画像ライブラリーから「Baseball」を追加します。
そのままでは少し大きいため、大きさを30%程度に変更しておきます。

ピッチャーとのバランスを見ながら、必要に応じて大きさを調整してください。
4.変数「重力」を作る
ボールを山なりに飛ばすために、変数「重力」を作ります。
変数を作成するときは「このスプライトのみ」を選択してください。

「このスプライトのみ」にしておくと、今後ボールをクローンして複数発射する場合でも、それぞれのボールが別々の重力を持てます。
今回の「重力」は、実際の重力そのものではなく、ボールを上下方向へどれだけ動かすかを管理する値です。
5.最初はボールを隠す
緑の旗を押した直後は、まだボールを投げていないため、ボールを隠しておきます。
Baseballに、次のプログラムを作成します。
「緑の旗が押されたとき」
隠す

これで、ゲーム開始時にはボールが表示されません。
6.ボールを投げるプログラム
次に、メッセージ「投げる」を受け取ったときの処理を作成します。
Baseballに、次のプログラムを作ります。
メッセージ「投げるを受け取ったとき」
重力を5にする
「Pitcher」へ行く
y座標を80ずつ変える
表示する
端に触れたまで繰り返す
x座標を20ずつ変える
y座標を重力ずつ変える
重力を-0.5ずつ変える
隠す

処理の内容を順番に確認します。
6-1.ピッチャーの手元からボールを出す
最初に「Pitcherへ行く」を実行し、ボールをピッチャーと同じ位置へ移動させます。
ただし、このままではボールがピッチャーの体の中央に移動します。
そこで、「y座標を80ずつ変える」を使い、ボールを手元付近まで上へ移動させます。
80という数値は目安です。ピッチャーの大きさや位置に合わせて調整してください。
位置を決めた後に「表示する」を実行することで、ボールがピッチャーの手元から現れたように見えます。
6-2.ボールを右方向へ進める
繰り返しの中にある「x座標を20ずつ変える」で、ボールを右方向へ移動させます。
20という数値は、ボールの横方向の移動量です。
数値を大きくする:速く進む
数値を小さくする:ゆっくり進む
ボールの速さを変えたい場合は、この数値を調整します。
6-3.重力で山なりの動きを作る
「y座標を重力ずつ変える」では、変数「重力」の値だけボールを上下方向へ移動させます。
投げ始めたときの重力は5なので、最初はy座標が増え、ボールが上へ進みます。
その後、「重力を-0.5ずつ変える」によって、重力の値が次のように小さくなります。

5 → 4.5 → 4 → 3.5 → 3 → …… → 0 → -0.5 → -1重力がプラスの間は、ボールが上昇します。
値が0に近づくと上昇する勢いが弱くなり、0を下回るとボールが落下します。
さらにマイナスの値が大きくなるため、徐々に落下速度も速くなります。
この変化によって、ボールが山なりに飛ぶ動きを表現できます。
6-4.端に着いたら隠す
ボールがステージの端に到達すると、繰り返しが終了します。
最後に「隠す」を実行し、画面の端にボールが残らないようにします。
次にスペースキーを押すと、ボールは再びピッチャーの位置へ移動し、手元から飛び出します。
数値を変えて動きを調整する
今回使用した数値は、自由に変更できます。
ボールを高く投げたい場合は、重力の初期値を大きくします。

ボールを速くしたい場合は、x座標の移動量を大きくします。

ゆっくり落下させたい場合は、重力を減らす量を小さくします。

数値を変えながら、ボールの高さや速さの違いを確認してみてください。
今回のまとめ
今回は、Scratchでボールを山なりに投げる方法を確認しました。
ポイントは次の通りです。

次回は、このプログラムを改造して、クリックした場所に向かってボールを投げる方法を紹介します。
ファイブボックス一分間スクラッチ講座 の記事はこちらでまとめてあります。
ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!