ファイブボックス一分間スクラッチ講座アイキャッチ画像
一分間スクラッチ講座 スクラッチの加速(重力)ジャンプ 基本編

このブログテーマでは、スクラッチの初心者から上級者まで、ちょっとお役に立つ情報を不定期で紹介していきます。

今回から数回、ジャンプの方法についてご説明していきます。まずは基本的な加速ジャンプの方法。加速ジャンプとは重力が働くジャンプのことで、飛び出す瞬間に最も上向きの力が大きく、徐々に重力によって速度が減速、最高到達点で上向きの力が0になります。あとは重力でマイナスの力が大きくなって、速度を上げながら落下するというもの。

下の動画は不定期配信の「ファイブボックス 一分間スクラッチ講座」です。ご興味のある方は併せてご参照ください。

事前準備

まずは完成版をご確認ください。

このサンプルでは、着地を色で判定します。地面の色がはっきりわかる「Blue Sky」という背景画像を指定します。

背景を選択から「Blue Sky」を選択

変数を2つ用意します。

キャラクターのY座標上の移動量を管理する「ジャンプ力」

その「ジャンプ力」に下向きの力を与える「重力」

変数:ジャンプ力と重力を作成

スクリプトの作成

1つ目のスクリプトを作成します。

旗が押された後に以下の処理を実行

  • x座標とy座標の初期化(地面より上の任意の場所に指定します)
  • 変数「ジャンプ力」を0でリセット
  • 変数「重力」にマイナスの値をセット、サンプルでは-1に指定 ※このマイナスの値が大きいほど重力が強くなります
  • ずっと繰り返し以下の処理を実行
    • もし上向き矢印キーがおされたら
      • ジャンプ力を15に指定 ※大きな値にするほど、高く飛びます
      • 上向き矢印キーが押されて無い状態(離される)まで待つ※押し続けるとそのまま上空に上がっていきます
スクラッチジャンプのスクリプト1

最後のブロックで待ち時間が入りました。待ち時間があると、ずっとの中の処理は一時停止します。継続して処理を続けたい場合は、別の「ずっと」を作成します。これを「並列処理」と呼びます。

もう一つの繰返し処理の中では次の処理を行います。

スクラッチジャンプのスクリプト2、地面の色をスポイト機能で抽出
  • ずっと以下の処理を実行
    • y座標を変数「ジャンプ力」(yの移動量)ずつ変更
    • もし地面の色に触れたら※地面の色はスポイト機能で取得します
      • 「ジャンプ力」を 0 に指定(yの移動なし)
    • そうでなければ(空中にいたら)
      • 「ジャンプ力」を「重力」ずつ変える※下向きの力を徐々に大きくする

確認

いったん完成しました。動きを確認してみましょう。

ちゃんとジャンプすると思います。しかし初期位置によっては、または空中でジャンプした時など、時々地面に足が沈んでしまいます。

スクラッチのずっとの中では、1秒間に数十回の処理が行われています。ずっとの中の1つ1つの処理をフレームと呼びます。

下の右側の図では地面に触れていますが、左側ではまだ地面に触れていません。

左側の着地の直前、この時例えばジャンプ力が -15 だったとします。その場合、次のフレームでは現在の場所から15だけ下に移動します。そうすると、右図の様に地面に沈んでしまいますよね。

スクラッチジャンプで下に沈む原因

これを快活するには、沈んだ分戻すという処理が必要になります。

次回はこの内容を解説します。

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

ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

TOP