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

さのプログラミング教室

鎮守の森教室

無料体験会実施中!

かべに当たると止まる(当たり判定1)【Scratch】

ブログ

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

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

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

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

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

今回から何回かシリーズで、「触れたら止まる」プログラムについて書きます。

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

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

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

準備:地面やかべを作る

今回は、(背景ではなく)スプライトでかべや地面を作ります。この方法の良い点は、いろいろな色を使って作っても、「スプライトと触れたら」という条件で止まってくれるところです。

スプライト名を「地面」としました。

スプライト「地面」

準備:変数「動き」を作る

今回のプログラムは、動くスピードを調整するために、「動き」という変数を作り、それを動きのプログラムに組み込んでいきます。「動き」=5に設定します。

変数「動き」

左右に動くプログラムを作る

矢印キーを押すと、左右に動くプログラムを作ります。

今回は左右キーのプログラムを「定義ブロック」にまとめて使えるようにします。

定義ブロックを作成

「ブロック定義」で「ブロックを作る」を選択します。

作成画面で、名前を「左右キー」とし、
画面を再描画せずに実行する」にチェックを入れます。←重要

矢印キーを押したときのプログラムを入れる

定期ブロックを作ると、プログラム作成画面に「定義 矢印キー」というブロックが現れるので、その下にくっつけるように矢印を押したときの動きを表すプログラムを書いていきます。

左右キーを押したときの動きを表すプログラム。

かべに触れたら止まるプログラム

定義の中にかべに触れたら止まるプログラムを追加していきます。

考え方としては、

動かすスプライトが「もしかべに触れたら」「かべから離れるまで、壁とは逆向きに移動し続ける」というプログラムを作ります。そうすることで、かべに向かう動きと、壁と逆向きに移動し続ける動きが相殺しあって、結果としてかべに触れると止まったように見えるわけです。

「かべから離れる」というブロックは作れないため、「〇〇ではない」を使って、次のような条件ブロックを作ります。

このブロックの条件から外れるまでずっと「壁とは逆向きに移動し続ける」プログラムを実行すればいいので、下のようなプログラムになります。(下のプログラムは、右キー用。)

「動き」にマイナスの数値をかけているのは、掛け算することで値が負の値になることを利用したものです。中学1年生の数学ですね♪

このプログラムを、左右キーのプログラムに追加します。

左キーのプログラムは、数値がマイナスになるように「動き*−1」を入れています。

定義ブロックを「ずっと」で囲む

仕上げです。定義ブロックを「ずっと」ブロックで囲んで、プログラムが動いている間ずっと操作できるようにします。

定義ブロックを使うと、メインプログラムがシンプルになる。見やすい♪

これで、左右でかべにぶつかったときに止まります。

ピタッと止まる。気持ちいい♪

終わりに

今回は、左右のかべに触れると動きが止まるプログラムを作りました。

次回は、地面に着地できるようにします。


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


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

画像に alt 属性が指定されていません。ファイル名: line_test_lesson-300x202.jpg
LINE公式よりお申し込みください

タイトルとURLをコピーしました