(ページの最後にはゲームへのリンクもあるよ♪)
こんにちは。サイエンスコミュニケーターの高知尾です。
カミオカラボで行っているプログラミング教室(全4回)の第2回が開催されました。
今回は、第1回で学んだこと(ねこの"スプライト"を左右に動かす)などを使って具体的にゲームを作ってみようということで、下の図のようなアクションゲーム作成にチャレンジしました。
スプライトを操作して宝箱をゲットしよう!
ご覧のように、スプライト(プログラムを記述していくオブジェクトでここでは猫)を宝箱まで到達させるためには崖の上まで何度かジャンプさせなくてはならないようです。
そのためにはまず、私たちが住む現実世界でどうなっているかを考えてみます。
私たちが空中にふわふわと浮かんでいってしまわないのは、地球が常に下方向に引っ張ってくれているからです。
この力は...そう、「重力」ですね。
ジャンプのプログラミングを書く前に、ゲームの世界でも重力を再現してみましょう。
ゲームの世界では、下方向に進み続けるようにしてあげます。
ただこれだけだと、地面を通り抜けて地下深くまで行ってしまいます。...どこかで聞いたことがある気もしますが。
そうならないために、地面と接したら止まるようにしてあげる必要があります。
物理では、「垂直抗力」と解釈できるでしょうか。(教室ではここまでは踏み込みませんでしたが。)
これで、あとはキー(例えば上キーとか)を押すことで一定距離だけ上に進むようにすれば、ジャンプができます。
ジャンプした後は、重力のおかげで自然と下に落ちてきます。
...さて、これで完成でしょうか?
実はこれだけだと、空中で二段ジャンプや三段ジャンプができる超人になってしまいます。(それでもいいのですが、ここではもう少し現実世界に近づけてみましょう。)
そこで、スプライトは地面に足を着いているときだけしかジャンプができないという条件を加えてあげます。
このように、プログラミングをしていく過程で現実世界がどうなっているかを探るきっかけになります。
高校物理になりますが、さらに正確に重力を表現するために「加速度」の存在に気づくには、フリースローゲームとか、簡単なロケット打ち上げゲームとか作ってみても面白いかもしれませんね。
教室ではその後、敵を出現させたり、敵を攻撃できるようにしてみました。
(ちょっと忙しなかったかなという気もしますが…、)ここまでを約1時間で進めることができました。
参加者からは、「敵が襲ってくるようにしたい」、「敵が攻撃してくるようにしたい」、「フィールドを大きくしたい」、また「場所によってクリアできなくなってしまうバグがあるので直したい」といった意見がありました。
第二回は親子でのご参加が多かったです。
さて、次回はscratchの拡張パッケージにある「ビデオモーションセンサー」を用いて、AR(拡張現実)っぽいゲームを作っていきたいと思います。日常世界の一部にCGや映像が入り込んでくるようなプログラムを作り、「未来」を感じてみましょう。
最後に、今回のプログラミング教室の講義ノートを置いておきます。
それでは!
★完成プログラムはこちら