Webブラウザだけでプログラム開発から実行まで行える「Scratch 2.0」を用い、センサーの接続や外部デバイスのコントロールに挑戦! 今回は、振動センサーと連動するゲーム作りに挑戦します。
本連載は、Webブラウザ上でプログラム開発から実行までを行える「Scratch 2.0(以下、Scratch)」を用いた“フィジカルコンピューティング”入門です。電子回路があまり得意でない人でも取り組みやすい、センサーや外部デバイスと接続した作例を紹介しています。
前回は自作の振動センサーをPCのマイク端子につなぎ、信号の変化をイベントとして捉えプログラムを駆動する方法について勉強しました。今回はその振動センサーと連動するゲーム作りに挑戦します。
今回もイベントによって駆動するスクリプトが登場します。また新しい概念としてScratch 2.0から採用された動的クローンの生成と消滅にも挑戦していきましょう。この仕組みを使えば、シューティングゲームで弾の連射などを容易に実現できます。
参考プロジェクト: | |
---|---|
⇒ | AttackTank3 |
⇒ | dogFight |
図1が今回作成するゲームのイメージです。
画面上の部屋の中をネズミが走り回り(図2)、ネズミが中央の照準に入ったとき、PCのマイク端子に接続したセンサーがある一定以上の振動を検知するとネズミが消滅していきます。この全てネズミを退治すれば、ゲームは終了。画面上の照準の位置に振動センサーを配置しておけば、そこに例えばゴム鉄砲の弾が当たった場合に、ネズミに着弾したような疑似体験ができます。
それでは早速、プログラムを作っていきます。いつもの通りプロジェクトエディタを開いてください。プロジェクト名は何でも構いません。筆者は「Mouse Shooting」としました。プロジェクトエディタの開き方や使い方が分からない人や、まだアカウントを持ってない人は、本連載の第1回や第2回を参考にしてください。
今回のゲームは、ステージとネズミ、そして照準の3つのスプライトが登場します。まずはネズミのスプライトから取り掛かりましょう。
ネズミのコスチュームは、ライブラリーから拝借します。プロジェクトエディタの左下にあるスプライトリストの新しいスプライトアイコンの中からGIGA(妖精のアイコン)を選択し、スプライトライブラリーを開きましょう。そこからmouse1を選択し、プロジェクトに取り込みます(図3)。
次に、プロジェクトエディタ中央のブロックパレットのタグをコスチュームに変更します。するとプロジェクトエディタの左画面がペイントエディタになり、先ほど取り込んだネズミのコスチュームが表示されます。ここでこのコスチュームの名前をmouse2に変更しておきます。コスチュームの名前は、ペイントエディタ左上のテキストボックスの文字列を書き換えることで変更できます。
クローンは新しい概念なので、スクリプトの説明に移る前にここで少し説明しておきます。今までのスプライトではステージ上にはそれぞれ1つずつしか登場できなかったのですが、このクローン機能を使えば1つのスプライトから複製をいくらでもステージ上に登場させられるのです。
クローン命令を出すスプライトは、別のスプライトでも自分のでも構いません。また、プログラム動作中に新たにクローンを生成したり、消滅させたりすることもできます。このように動的にクローンの操作ができるようになったのも、Scratch 2.0の大きな特徴です。
ただしクローンを作ると、それごとにシステムの資源を消費します。たくさん作り過ぎると全体動作が遅くなりますので、使い方に気を付けてください。最も大事なことは不要になったクローンは必ず消滅させることです。他のシステムでも同様ですが、システムのリソースを使用したら必ずその後始末が必要です。
図4がネズミのスクリプトです。まず左のブロック列から見ていきましょう。ネズミのスクリプトの起点は、クローンが生成されたところから始まります。ネズミのスプライトのクローンを生成するスクリプトが書かれているのはステージのスクリプトなので、このスクリプトはステージのスクリプトにより起動されるといってもよいでしょう。「クローンされたとき」は制御ブロック群から選択できます。
次にネズミが進む方向を乱数で指定しています。次々とネズミが出てくる場所がステージの右下の角(x:240、y:−180)なので、そこから画面中央方面に向けて進むように角度を決めています。部屋の右下にネズミの巣があって、そこからネズミが湧いて出る演出にしたかったのですが、いかがでしょうか。次の「表示する」でネズミをステージ上に表示させています。
続いて永久繰り返し処理に突入します。ネズミは5歩ずつ移動し、ステージの端まで到達すると、折り返す動作となります。
右のブロック列は、音量が50以上になったときに駆動されるスクリプトです。音量の値は、前回の記事を参考に適切な値に調整してみてくさい。次の条件文では照準(aim)に触れたかで、照準の中にネズミが入ったかを判断をしています。その条件がそろった場合、4番のドラムを鳴らします。4番はシンバルの音ですが、この値を変更することで他のパーカッション系の音に変更できます。その後、このスプライト自体を消滅させます。これでネズミは画面から消えます。
Copyright © ITmedia, Inc. All Rights Reserved.