見出し画像

一分間スクラッチ講座 | ボールを山なりに投げる方法|重力を使って自然な軌道を作ろう

今回は、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.端に着いたら隠す

ボールがステージの端に到達すると、繰り返しが終了します。
最後に「隠す」を実行し、画面の端にボールが残らないようにします。

次にスペースキーを押すと、ボールは再びピッチャーの位置へ移動し、手元から飛び出します。


数値を変えて動きを調整する

今回使用した数値は、自由に変更できます。

ボールを高く投げたい場合は、重力の初期値を大きくします。

重力を8にする

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

x座標を30ずつ変える

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

重力を-0.2ずつ変える

数値を変えながら、ボールの高さや速さの違いを確認してみてください。


今回のまとめ

今回は、Scratchでボールを山なりに投げる方法を確認しました。

ポイントは次の通りです。

次回は、このプログラムを改造して、クリックした場所に向かってボールを投げる方法を紹介します。



ファイブボックス一分間スクラッチ講座 の記事はこちらでまとめてあります。


ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。


いいなと思ったら応援しよう!

ファイブボックス よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!