はぐくもう「つなげるちから

さのプログラミング教室

鎮守の森教室

無料体験会実施中!

重力と着地(当たり判定2)【Scratch】

ブログ

マリオのようなアクションゲームをScratch作ろうと思ったときに、必要になるのが、

「止まる」プログラムです。

地面にふれていたら、それ以上下に落ちないように「止まる」

横移動中、かべに触れたら「止まる」

ジャンプ中、頭とブロックが触れたら、それ以上上に行かずに「止まる」

前回は、「横移動中、かべに触れたら止まる」プログラムでした。

今回は、「重力と着地」のプログラムです。

今回の記事も、下のYouTube動画を参考にさせていただきました。

キッズITチャンネル様、ありがとうございます!

準備:前回のおさらい

今回のお話は、前回からの続きです。前回をまだご覧になってない方は、そちらからご覧いなったほうがよりわかると思います。

「かべに当たると止まる」プログラム。

壁などの障害物は、スプライト「地面」で作りました。

スプライトで作った「地面」

これらをもとに、「重力と着地」のプログラムを作っていきます。

定義ブロック「重力処理」を作る

定義ブロックを作り、その中にプログラムを収めます。そうすることで、実際に重力を使いたい場所には、定義ブロックだけを入れればよくなり、プログラムが読みやすくなるからです。

作ろときには、「画面を再描画せずに実行する」にチェックを入れてください。

「画面を再描画せずに実行する」へのチェックを忘れずに!

変数「落ちるスピード」を作る

重力を表現する、ということは、落ちる時間が長くなるほど、落下スピードが速くなっていく、ということです。今回は、「落ちるスピード」という変数を作り、その数値を変化させることで、自由落下らしく見せるプログラムにします。

重力のプログラム

とてもシンプルです。

重力のプログラム。

これだけ。

スプライトの縦の動きは、y座標で表現します。
落ちる→下に移動する→y座標の値が減少

「落ちるスピード」が「増えた」時、y座標の「減り方」が大きくなるわけなので、

「落ちるスピード」に−1をかけて、値を負にします。

あとは、その値ずつy座標が変化すればいいだけなので、これで重力表現は完成です。

しかしこれだけだと、地面を突き抜けて画面下まで落ちていったしまいます。

そこで、地面に触れたときの処理が必要になってくるわけです。

地面に着地するということは

では、地面に着地するということは、動きがどうなればいいのでしょう?

答えは、

「地面に触れた時、落下が止まればいい」です。

落下が止まる、ということは、落ちるスピードが0になる、ということ。

つまり、「落ちるスピード」=0にすれば良い、というわけです。

逆に、地面に触れていなければ、落下スピードはどんどん大きくなるわけなので、

「地面に触れていなければ、落下スピードが大きくなる」ことも条件に入れていきます。

「もし〜でなけれれば」ブロックを使います。

着地のプログラム

もうひと工夫

先ほどのプログラムを組めば、ひとまず完成なのですが、実は、一つ問題があります。

それは、落下スピードによっては、地面の上スレスレにスプライトが止まらずに、少しだけ地面に埋まるような形で止まる場合があることです。

地面にめり込む。

このままでは操作できなくなるので、どんな高さから落ちても、地面にめり込まずに着地するようにプログラムを追加します。

これは、前回のx座標に行った処理と同様です。

地面と触れている間ずっと=「地面に触れた」ではない、まで繰り返すというプログラムを追加します。

y座標は、増えれば上へ移動するので、地面に触れている間ずっと、y座標を1ずつ変えるを繰り返してもらえば、着地したような表現になります。

完成、終わりに

出来上がった重力と着地のプログラムは、以下のようになります。

重力と着地のプログラム

前回の仕上げで使った「ずっと」のブロックに、「重力処理」ブロックを追加して、完成です。

組み込んだ。読みやすいプログラムになるには、「定義ブロック」の活用がオススメです♪

これで残るは、「ジャンプ」の処理です。それは次回の記事に譲ります。


さのプログラミング教室は、「はぐくもう!つなげるちから」が合言葉の教室です。
同じ時間のクラスには、5人程度のお子さんが入室しますが、一人一人の興味・進度に合わせた課題を提供しますので、自分のペースで学ぶことができます。学習過程があり、同じスタート地点からスタートしますが、理解度やがんばりに応じて、どんどん次のステップへ進むことができます。


レッスンを無料で体験できます。
LINE公式に入り、「無料体験申込」を
タップしてお申し込みください。

LINE公式よりお申し込みください
タイトルとURLをコピーしました