こちらでは、スクラッチでジャンプする3つの作り方を紹介します。
スクラッチでジャンプする方法は、こちらの3つです。
- もっとも簡単なジャンプの作り方
- 重力を考慮した滑らかなジャンプの作り方
- ジャンプしながら横に移動する作り方
もっとも簡単なジャンプの作り方
こちらは、もっとも簡単なジャンプの作り方です。
上向き矢印キーを押すと、等間隔で上にジャンプし、等間隔で下に降りてきます。
こちらが、もっとも簡単なジャンプの作り方のスクリプトです。
まず、「▢キーが押されたとき」ブロックで、「上向き矢印」を選択し、上向き矢印キーが押されたときに、その下のスクリプトを実行します。
次に、「〇回繰り返す」ブロックで20回繰り返し、その中に、「y座標を〇ずつ変える」ブロックで、10ずつy座標を変えます。
y座標は、上がプラスで下がマイナスの座標なので、プラスを指定すれば上に移動するということです。
例えば、こちらの現在のy座標は「-109」です。
この状態から「y座標を10ずつ変える」を20回繰り返すと、以下のようにy座標に移動します。
繰り返し回数 | y座標 |
---|---|
0 | -109 |
1 | -99 |
2 | -89 |
3 | -79 |
4 | -69 |
5 | -59 |
6 | -49 |
7 | -39 |
8 | -29 |
9 | -19 |
10 | -9 |
11 | 1 |
12 | 11 |
13 | 21 |
14 | 31 |
15 | 41 |
16 | 51 |
17 | 61 |
18 | 71 |
19 | 81 |
20 | 91 |
上までジャンプしたら、今度は「y座標を-10ずつ変える」を20回繰り返します。
繰り返し回数 | y座標 |
---|---|
0 | 91 |
1 | 81 |
2 | 71 |
3 | 61 |
4 | 51 |
5 | 41 |
6 | 31 |
7 | 21 |
8 | 11 |
9 | 1 |
10 | -9 |
11 | -19 |
12 | -29 |
13 | -39 |
14 | -49 |
15 | -59 |
16 | -69 |
17 | -79 |
18 | -89 |
19 | -99 |
20 | -109 |
20回目の「-109」は、一番最初のy座標になりますので、ジャンプして着地した座標というわけです。
もっとも簡単なジャンプの作り方ですが、y座標を細かくチェックすることはできません。
どのように移動しているのか確認したい場合は、スクリプトの中に「〇秒待つ」ブロックを使って、処理を一時的に止めて確認しましょう。
「〇歩動かす」ブロックでのジャンプの作り方
スプライトの移動には、座標指定以外に「〇歩動かす」ブロックを使って、ジャンプを作る方法があります。
こちらが、「〇歩動かす」ブロックを使ったジャンプのスクリプトです。
「〇歩動かす」ブロックは、向いている方向に移動するため、上に移動させるには上向き(0度)に、下に移動させるには下向き(180)に設定する必要があります。
ただし、スプライトが上や下を向いたりジャンプするとおかしく見えるので、「回転方法を▢にする」ブロックを使って、回転させないようにします。
重力を考慮した滑らかなジャンプの作り方
こちらは、重力を考慮した滑らかなジャンプの作り方です。
上向き矢印キーを押すと、最初は勢いよく上にジャンプし、重力があるような滑らかなジャンプをします。
こちらが、重力を考慮した滑らかなジャンプの作り方のスクリプトです。
初期設定
まず、「緑の旗が押されたとき」ブロックで、緑の旗が押されたときに下のスクリプトを実行します。
「x座標を〇、y座標を〇にする」ブロックは初期位置の設定で、「変数を〇にする」ブロックで、変数「y加速度」を0に設定しています。
変数「y加速度」は、y方向の移動する量で利用します。
変数の作り方については、「スクラッチの変数の作り方と3つの変数の違いについて」をご確認ください。
重力を考慮した変数「y加速度」
こちらは、地面に着地するまでに変数「y加速度」を変化させて、「y座標を〇ずつ変える」ブロックで、変数「y加速度」ずつy座標を変えています。
もしも、スプライトが地面の茶色に触れたら変数「y加速度」は「0」になり、それ以外の場合は変数「y加速度」は「-1」ずつ変わります。
具体的にこちらのスクリプトを実行して、y座標の値を確認していきます。
初期位置のy座標は「100」で、変数「y加速度」は「0」になります。
地面の茶色にはまだ触れていない状態ですので、変数「y加速度」は「-1」ずつ変化し、y座標の位置も下がっていきます。
y座標の位置が下がっているということは落ちている状態ということです。
そして、地面の茶色に触れたとき、つまり着地したときに、変数「y加速度」は「0」になり、y座標の移動も「y座標を0ずつ変える」となるため、移動しません。
ジャンプ処理
こちらは、ジャンプ処理のスクリプトです。
「▢キーが押されたとき」ブロックを使って、もしも上向き矢印キーが押されたら変数「y加速度」を「20」に設定しています。
ジャンプするときは、地面に着地しているとき、つまり地面の茶色に触れている時ですので、地面の茶色に触れている真(true)の中に、こちらのスクリプトを入れます。
厳密に変数「y加速度」の値を変化させたい場合は、こちらのように「もし◇なら▢でなければ」ブロックを入れ子にしても大丈夫です。
これで、上向き矢印キーが押すと、上にジャンプし、重力を考慮した滑らかなジャンプの出来上がりです。
実際にy座標は、以下のように変化します。
繰り返し回数(ずっと) | y加速度 | y座標 |
---|---|---|
0 | 0 | -110 |
1 | 20 | -90 |
2 | 19 | -71 |
3 | 18 | -53 |
4 | 17 | -36 |
5 | 16 | -20 |
6 | 15 | -5 |
7 | 14 | 9 |
8 | 13 | 22 |
9 | 12 | 34 |
10 | 11 | 45 |
11 | 10 | 55 |
12 | 9 | 64 |
13 | 8 | 72 |
14 | 7 | 79 |
15 | 6 | 85 |
16 | 5 | 90 |
17 | 4 | 94 |
18 | 3 | 97 |
19 | 2 | 99 |
20 | 1 | 100 |
21 | 0 | 100 |
22 | -1 | 99 |
23 | -2 | 97 |
24 | -3 | 94 |
25 | -4 | 90 |
26 | -5 | 85 |
27 | -6 | 79 |
28 | -7 | 72 |
29 | -8 | 64 |
30 | -9 | 55 |
31 | -10 | 45 |
32 | -11 | 34 |
33 | -12 | 22 |
34 | -13 | 9 |
35 | -14 | -5 |
36 | -15 | -20 |
37 | -16 | -36 |
38 | -17 | -53 |
39 | -18 | -71 |
40 | -19 | -90 |
41 | -20 | -110 |
42 | 0 | -110 |
上向き矢印キーが押すと変数「y加速度 」は「20」になるので、y座標「-110」から「-90」に移動します。
そこから変数「y加速度 」は「-1」ずつ変わるため、移動する距離が少しずつ小さくなります。
そして、変数「y加速度 」が「0」になると、y座標の位置がそれ以上あがりません。
つまり、変数「y加速度 」が「0」の状態が、ジャンプの頂点というわけです。
そこから、徐々にy座標の位置が下がり、y座標が「-110」になると、地面の茶色に触れたので、変数「y加速度 」が「0」になります。
このように変数「y加速度 」を変化させることで、重力を考慮した滑らかなジャンプを作ることができます。
ジャンプしながら横に移動する作り方
こちらは、ジャンプしながら横に移動する(放物線ジャンプ)作り方です。
先ほどの重力を考慮した滑らかなジャンプの作り方に左右移動を加えていきます。
こちらが、ジャンプしながら横に移動する(放物線ジャンプ)作り方のスクリプトです。
「ブロックを作る」から定義「左右移動」に左右移動のスクリプトをまとめています。
定義「左右移動」のスクリプトです。
もし右矢印キーが押されたら、「〇へ向ける」ブロックで向きを90度にし、10歩歩かせます。
左矢印キーが押された場合は向きを-90度の逆向きにして、10歩歩かせます。
こちらの定義「左右移動」は、もう一方のスクリプトの「ずっと」ブロックの中に入れるため、常に左右矢印キーが押されたかチェックされます。
こちらがもう一方のスクリプトで、初期設定として、「回転方法を〇にする」ブロックで、「左右のみ」を選択し、回転させないようにしています。
こちらを設定しないと、このように左に移動させた際、向きが-90度になるため、スプライトが回転してしまいます。
このようにならないための初期設定です。
そして、定義「左右移動」は、「ずっと」ブロックの中に入れています。
これで、上と右の矢印キーを同時に押すと、横に移動しながら滑らかなジャンプをすることができます。
もしも、ジャンプしながら左右移動をさせたくない場合は、地面の茶色に触れている時だけ左右移動できるようにしましょう。
このようにプログラミングすると、地面に触れている時だけ左右移動ができ、真上だけにジャンプします。