ふつう〜むずかしい

弾道(ものを投げる動き)のしくみ

ボールを投げたときのような放物線の動きを、重力・空気抵抗・本格的な時間計算まで、4段階で作っていくよ。

出典: Scratch Wiki

  1. ボールを投げて放物線を描く のサムネイル

    1.ボールを投げて放物線を描く

    X速度とY速度の 2 つを使って、ものを投げた時のような放物線(カーブした軌跡)を描こう。重力で Y速度がだんだん小さくなって、ボールが弧を描いて落ちていくよ。Wiki オリジナルでは重力ブロックを「ずっと」の最初に置いていますが、教材では分かりやすさのため最後に置いています(物理学的に同じ結果になります)。

    わざ
    このレッスンをはじめる
  2. 落ちる速さに上限をつける のサムネイル

    2.落ちる速さに上限をつける

    前のレッスンでは Y速度がどんどん速くなって、すぐ画面から消えていったね。Y速度に「上限(マイナス 5 まで)」を作って、ある速さ以上では落ちないようにしよう。ゲームのキャラクターによく使われるテクニックだよ。

    わざ
    このレッスンをはじめる
  3. 空気抵抗で少しずつ遅くなる のサムネイル

    3.空気抵抗で少しずつ遅くなる

    本当のボールは空気の抵抗で少しずつ遅くなるよね。X速度と Y速度を毎フレーム 0.99 倍することで、空気抵抗を表現しよう。前のレッスンとは違って、X方向にも減速がかかるよ。

    わざ
    このレッスンをはじめる
  4. 時間ベースの本格物理 のサムネイル

    4.時間ベースの本格物理

    本物の物理シミュレーションでは、1 秒間に何メートル動くかを計算するよ。タイマーを使って前のフレームからの経過時間(dt)を測って、速度に dt をかけることで、コンピュータの速さに左右されない正確な物理を作ろう。地球の重力は -9.8 m/s² で、「-9.8 × dt」が 1 フレームあたりの本物の速度変化(重力 × 経過時間)だよ。ただし Scratch のステージ (480×360) は本物の地球と比べると小さいので、その本物の速度変化に「画面用の調整値 20」を掛けて画面で見やすくしてある。Wiki オリジナルとはブロックの並び順を変えています(教材ステップを段階的に組み立てるため)。並び順の変更で位置Y の反映が 1 フレームだけ遅れますが、見た目は同じ放物線になります。緑の旗を押した直後、最初の 1 フレームだけタイマーの値が大きいと一瞬大きく飛ぶことがあるので、何度か押してみよう。

    わざ
    このレッスンをはじめる