プログラミングテクニック

スクラッチで横移動をなめらかにする方法

こちらでは、スクラッチで横移動をなめらかにする作り方を紹介します。

スクラッチプロジェクトの中を見る

こちらは、横移動をなめらかにする作り方です。

左右矢印キーを押すと、徐々に加速していき、逆方向のキーを押すと減速しながら滑らかに移動します。

こちらが、横移動をなめらかにする作り方のスクリプトです。

初期設定

まず、「緑の旗が押されたとき」ブロックで、緑の旗が押されたときに下のスクリプトを実行します。

x座標を〇、y座標を〇にする」ブロックは初期位置の設定で、「回転方法を〇にする」ブロックで、「左右のみ」を選択し、スプライトを回転させないようにしています。

スプライトの横移動には、「〇歩動かす」ブロックを使っており、回転方法を左右のみに設定しないと、このように左に向いた際に向きが-90度になるため、スプライトが回転してしまいます。

このようにならないための初期設定です。

そして、最後に「変数を〇にする」ブロックで、変数「x加速度」を0に設定しています。

変数「x加速度」は、x方向の移動する量で利用します。

変数の作り方については、「スクラッチの変数の作り方と3つの変数の違いについて」をご確認ください。

なめらかな横移動

こちらは、なめらかな横移動のスクリプトです。

もしも、右矢印キーが押されたときは、スプライトの向きを90度(右向き)にして、変数「x加速度」を「1」ずつ変えています。

もしも、左矢印キーが押されたときは、スプライトの向きを-90度(左向き)にして、変数「x加速度」を「-1」ずつ変えています。

x座標は、右がプラスで左がマイナスの座標なので、プラスを指定すれば右に、マイナスを指定すれば左に移動するということです。

最後に、こちらのスクリプトが滑らかに移動する部分になります。

x座標を〇ずつ変える」ブロックの〇には、変数「x加速度」を設定しています。

つまり、右矢印キーを押している間は、x座標が「1」ずつ増え続けるということです。

例えば、こちらの現在のx座標は「-180」です。

この状態からx座標を変数「x座標」ずつ変えた場合、以下のようにx座標に移動します。

右矢印キーが押された回数 x加速度
(移動距離)
x座標
0 0 -180
1 1 -179
2 2 -177
3 3 -174
4 4 -170
5 5 -165
6 6 -159
7 7 -152
8 8 -144
9 9 -135
10 10 -125
11 11 -114
12 12 -102
13 13 -89
14 14 -75
15 15 -60
16 16 -44
17 17 -27
18 18 -9
19 19 10
20 20 30

右矢印キーを押し続けると、x加速度(移動距離)が増え続けているのが分かります。

つまり、こちらのブロックは、車でいう「アクセル」です。

「アクセル」も踏み続ければ、加速してスピードが上がります。

このブロックだけでは、ステージからすぐにスプライトが消えてしまいます。

そこで、スピードを調整するためのブレーキとして、変数「x加速」を調整します。

ブレーキの役割を果たしているのが、「x加速度*0.9」の部分です。

変数「x加速度」に0.9を掛けることで、移動した後に、変数「x加速度」を徐々に小さくしていきます。

例えば、一定のテンポで右矢印キーを押した場合、変数「x加速度」の最大値は、3~4の範囲に収まります。

右矢印キーを長押しした場合であっても、変数「x加速度」の最大値は、8~9の範囲で、それ以上大きくなりません。

今回は、変数「x加速度」に0.9を掛けていますが、ポイントとなるのは、1未満の値を掛けることです。

1に近い値ほど移動距離は大きく、0に近い値ほど移動距離が小さくなります。

例えば、「x加速度*0.5」にすると、変数「x加速度」の値が半分になるので、ほとんど変数「x加速度」が大きくなりません。

逆に、1に近い「x加速度*0.99」にすると、スケートリンクで滑っているように移動します。

オススメの範囲は「0.9~0.99」です。

この範囲で、好きな滑らかな横移動を設定しましょう。

また、絶対にやってはいけないは「x加速度*1.1」など1より大きくすることです。

これは、余計に変数「x加速度」を大きくしてしまいますので、注意しましょう。

このように変数「x加速」を調整することで、滑らかに歩くことができます。