こんにちは、くのへです!
ファーストゲートではScratchを大人も子供も学んでます!
Scratchは子供から大人まで楽しめるプログラミング学習ツールですが、キャラクターに物理的な動きを加えることもできるのが魅力のひとつです。子供のうちに重力のロジックを習得しておくと、高校の物理の内容を先行して学習できるので、理科が好きな子に育つことは間違いありません!
Scratchと理科で2度おいしい学習内容になります!
今回は、重力を使ったキャラクターの動きと空中ジャンプ機能を解説します。
1.重力を使ったゲームについて
重力を使ったゲームは非常に多くあります。
恐らく世界で一番有名なのは「マリオ」だと思います。
ジャンプすると放物線を描いて着地します。
ここで、落下速度が上がらずに直線的に上下運動したとすると、なんか違和感がありますよね。
こういうゲームで違和感をなくすためには、重力の表現は必須です。
また、マリオには水中ステージがあり、床に着地していなくても連続ジャンプすることが出来ます。
移動速度や落下速度が遅いため「水中」っぽく表現されますが、速度が早かったら、これは「空中ジャンプ」です。
主人公キャラクターが重力の影響を受ける「マリオ」の様がゲームの他に、「プーヤン」のような攻撃用の発射物が重力の影響を受けるものもあります。
(下のゲームが「プーヤン」。矢を打ったり、肉を投げて狼を撃退します。この「肉」は重力の影響を受けて、放物線状に投げることが出来ます)
自分や、投げたものが放物線上に動くことは自然界では普通のことであり、これをゲーム中でも表現できれば、よりリアルなゲームを作ることが出来ます。
2.重力を子供が理解するために
と、ここまで書きましたが、重力を子供が理解できるように説明するのは、かなり難しいです。
しかし、それをNHKが見事に分かりやすく説明しています。
次のサイトがNHK for Schoolの「Why!?プログラミング」の公式サイトです。
https://www.nhk.or.jp/school/sougou/programming/
そして、この中の「カエルをジャンプさせろ!」の解説動画が、本当に分かりやすく説明しています。
↓このリンク先が「カエルをジャンプさせろ!」のページです。
https://www2.nhk.or.jp/school/watch/bangumi/?das_id=D0005180309_00000
動画を見ていくと、直線的なジャンプは違和感があること。ジャンプした移動距離を並べると、その移動距離の変化幅が一定であることなどが、本当に分かりやすく解説されています。(下は動画の抜粋です)
まずは子供に重力のロジックを教える際には、このNHKの動画を見てもらうということが絶対に分かりやすく、楽しく学んでくれると思います。
3.Scratchにおける重力の基本ロジック
動画には内容がサッと出てきます。
ただし非常に表示時間が短く、NHKの動画を見てパッと覚えれる人はいないと思います。
Scratchでの重力の基本コードはこちらです!!
この「y速度」という変数を「ずっと」の中で-1ずつ変えつつ、y座標をこの変数の値だけ変更することで、重力を表現できます。
さらに、この中に「もしスペースキーが押されたなら」「y速度を10にする」をセットすると、スペースキーを押した時にジャンプ(空中ジャンプ)出来るようになります
このプログラムを書いてから旗をおすと、スペースを押すたびにぴょんぴょんするようになります。
重力の実装ヨシ!!
後は敵が向かってくるようにすれば、敵をジャンプして避けるゲーム(「フラッピーバード」というジャンルのゲーム)が出来上がります!!
お子さんに指導する時は
お子さんに指導する際には、重力の基本プログラムは、まずは呪文だと思って覚えてもらうようにすればいいかなと思います。
ガチの物理の理論から覚えようとしても、それはちょっと難しいかなと思います。
何度かこのコードを書いて練習していくと、後からだんだんと理解が追い付いてくると思います。
そして完全に暗記した時、前述の以下の図がしっかりと見えてくるようになります。
ここまでお子さんが理解できたら、「速度」ではなく「加速度」の存在や力(F=ma)などを家族で話し合ってほしいな、と思います😊
おわりに
ここまでで、Scratchで重力を使ったジャンプ機能を実装し、空中でジャンプを続けられるようにする方法を紹介しました。この仕組みを使えば、鳥のように空中で自由に動き回るキャラクターを作ることができます。次回は、地面との接触を考慮してキャラクターが着地したときに動きが変わるように設定する方法も紹介する予定です。
この設定でいろいろなキャラクターを自由に動かしてみてくださいね!