2018年2月17日土曜日

Scratchでプログラミング その13 前後でネコの移動する速さを変える(相対速度を考える)

Scratchの使い方解説です、今回の難易度はNormal
前回までの記事についてこれていれば、簡単だと思います。

記事をまとめたページはこちら。

前の記事でネコの左右への移動速度を変えているという説明をしました。
少し説明が長くなりそうなので、ここで説明しておきます。


これは、ネコが左右に動くためのコマンドです。

先に説明したとおり、右へ進むときはネコは5の速さで前へ進むのに、左へ進むときは7の速さで進んでいます。
つまり、左へ移動する時のほうがネコが早く移動していることになります。

でも、普通はどちらへ移動するときも同じ速さにすべきだとは思いませんか?
左右で移動速度を変えているのは背景との相対速度を意識しているためです。



ここまでのサンプルでは、背景の木がずっと左から右へ流れています。
でも、実際の世界で考えると、背景の木は動くわけがないですね。
ですので、操作しなくても猫が前へ進んでるように見えていると思います。
木の動く速さが左方向へ2だとするなら、ネコは何もしなくても、右方向へ2で進んでいることになります。


では、ネコを操作して右へ5の速さで移動するとどうなるでしょうか?


ネコは何をしなくても右へ2の速さで移動しているため、合計で7の速さで移動していることになります。

逆に、ネコを左に5の速さで移動してみたらどうでしょう?
ネコはなにもしなくても右へ2の速さで移動しているため、実際には5-2で左へ3の速さで移動しているようにしか見えません。

今回は左右でネコの進む早さを同じに見せたいので、左側へネコを操作するときは、なにもしなくても移動してしまう2をネコの左向きの早さに追加して、7の速さでネコを移動させる必要があります。

プログラムで考えるとわかりにくいかもしれませんが、これって、単に相対速度の考え方を使っているだけなんです。
たしか中学か高校の物理の授業で習いましたよね??

もちろん、ゲームであれば厳密に速度を調整する必要はありません。
現実世界に忠実にあわせるよりも、キャラクターが面白く動くほうが大切だと思います。
また、背景がスクロールしない場合も、このような移動速度を考える必要なありません。

でも、今回のような調整をすることで、操作のときの違和感を減らすことが出来ます。
作ったプログラムの動きに何か違和感があれば、その都度原因を考えてみるのも面白いと思いますよ♪