こちらでは、スクラッチで横移動をなめらかにする作り方を紹介します。
こちらは、横移動をなめらかにする作り方です。
左右矢印キーを押すと、徐々に加速していき、逆方向のキーを押すと減速しながら滑らかに移動します。

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

まず、「緑の旗が押されたとき」ブロックで、緑の旗が押されたときに下のスクリプトを実行します。
「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加速」を調整することで、滑らかに歩くことができます。
