SCRATCHはスプライトを移動させるコードが用意されています。
スプライトを動かしたアニメーションや簡単なゲームを作ろうと思った場合に、例えば水の中を移動する動きをスプライトにさせたいことがあると思います。
地上の動きと水中の動きに違いを持たせるための工夫について紹介していきたいと思います。
陸上の場合
まず、陸上を移動する動きについては、以下の記事で紹介しているような方式で作ると、次のように作ることができます。
【SCRATCH】スプライトを歩かせる方法 – MerHack (mertimes.com)
この動きはスタスタと歩いている感じが出ており、水中の場合には水の抵抗を受けている感じがしないため違和感があるかもしれません。
水中の場合
水の抵抗を表現する
水中の動きに見せるためには、水の抵抗を受けている様子を表現できていることが望ましいです。
水の抵抗を受けている場合の挙動としては、速度が一定ではなく、徐々に水の抵抗を受けて速度が下がっていくようなコードを作ると表現できそうです。
そこでX座標を〇ずつ変えるの値を少しづつ小さくしたコードを、待ち時間を設けてつなげたものを用意してみます。
実際に実行してみた結果は次のような動きになります。
徐々に減速してから止まる動きになっているため、水の抵抗を少し表現できるようになりました。
動きを滑らかにする
水の抵抗の表現は移動速度の減速ということで良さそうですが、さらに水中っぽさを表現する工夫をしてみます。
上述のコードの場合、進む→待つ→進むというように、待ち時間が入るため若干動きにカクつくような状態になってしまいます。
水の中の移動はもっと滑らかな方が自然だと思います。
そこで繰り返しのコードを利用することでより少しづつ動きながら速度を落とすことで滑らかな動きにしてみたいと思います。
次のようなコードを用意します。
これは一回に動く量をより少なくする代わりに、繰り返しによって速度変化させることで待ち時間をなくす工夫をしています。
実行した場合の動きは次のようになります。
待ち時間がある場合に比べて繰り返しを使用した場合の方が幾分か動きが滑らかになっていると思います。
コスチュームの変更
基本的な動きについては出来上がりましたので、水中を泳いでいる様子を出すためにスプライトを変更しみみます。
「スプライトを選ぶ」から探してみると、Diver1というものがあったのでこれを選択してみます。
そして先ほどのコードを適用した結果します。
背景の変更
水中の動きなので、背景が水中でないと面白くありません。
背景も変更していきます。「背景を選ぶ」からUnderwater2を選んで設定していきます。
そして先ほどと同じ泳ぐ動作のコードをこのDiver1に設定し、動かしてみます。
それっぽく水中移動になりました。
左右上下に動けるようにする
最後に今までのコードの応用で左右上下に動けるようにします。
上下に行くときに体を傾けたり、左右で向きを反転させる仕掛けも付けます。
左右反転
右向き矢印と左向き矢印キーが押された時には「回転方向を左右のみにする」を設定し、それぞれ90度、-90度に向けるのコードをその下に設定します。これにより左右反転の動きが実現できます。
上下の回転
上下の動きの場合には「回転方向を自由に回転にする」を設定し、それぞれ0度に傾ける、180度に傾けるのコードをその下に配置します。
あとは先ほどと同じように繰り返しの移動で左右の時はX座標、上下の時はY座標を設定し、符号をうまく調整してやります。
実際に出来上がったコードは次のような形です。
では実際に動かしてみます。
うまく水中の上下左右の動きを実現することができました。
まとめ
今回は速度が徐々に小さくなっていくという水中の動きを再現する方法について紹介しました。また、繰り返しを使って滑らかにし、上下左右も動けるようにすることでより水中の中を自由に動いているようにできました。
今後もSCRATCHの小技についていろいろと試していきたいと思います。
コメント