libro
www.tuyano.com
App InventorによるAndroid開発入門

BallとImageSpriteでアクションゲームに挑戦!! (5/6)

作成:2013-07-17 08:40
更新:2013-07-17 08:40

■EdgeReachedとColliderWithイベントの作成

次に作成するのは、Ballの動きに関するイベント処理です。周囲の壁にぶつかった時の反射処理をする「EdgeReached」イベントと、パドルとぶつかった時の「ColliderWith」イベントを作成します。

●EdgeReachedイベント
Ball1が壁に反射した時のイベント処理ですね。ここで行っている処理を整理すると以下のようになります。

[If-Else]を使い、Edgeが「-3」かどうかチェック
先に述べたように、EdgeReachedではEdgeという引数が渡され、この値でどの面にぶつかったかがわかります。-3は「下の壁」にぶつかったことを示す値です。ここでは、他の3面にぶつかったら反射をしますが、下の壁にぶつかったら(パドルで打ち返し損ねた、ということなので)ゲームオーバーになります。

・ゲームオーバーの処理
Edge-3だった場合には、Ball1EnabledFalseにして動きを止め、それからLabel1Textに「GAME OVER...SCORE:○○」というように表示をします。まぁ、Ball1[Bounce]しなければ自動的に止まるので、Enabledの設定はしなくても問題はないでしょう。

・跳ね返り処理
Edge-3以外だった場合には、Ball1[Bounce]を呼び出してボールを跳ね返らせます。

●ColliderWith
Ball1がパドルとぶつかった時の処理です。このColliderWithイベントは、そのスプライトが別のスプライトに接触したら発生します。これはBallでもImageSpriteでもどちらでも構いません。このColliderWithでは、ぶつかった相手のコンポーネントを「other」という引数で渡します。

ImageSprite1とぶつかった場合
最初に[If]を使い、otherImageSprite1かどうかをチェックします。まぁ、今回はBall1ImageSprite1しかないのでそれ以外のものとぶつかることはないのですが、一応、衝突処理の基本ということで「何とぶつかったか」をチェックするようにしておきました。

・打ち返した時の処理
other = ImageSprite1だった場合には、跳ね返る処理をします。これはけっこういろいろなことをやっています。

1. [Ball1.Bounce]を使い、ボールを反射させる。
2. Ball1.Headingの値を、乱数を使って-10~+10の範囲で値を変更する。
3. scoreの値をBall1.Speed×10だけ増やす。
4. Label1.Textにスコアを表示する。
5. Ball1Speed増やす。

ボールの向きをランダムに少し変えたり、スコアを増やしたり、ボールを少しだけスピードアップしたりといったことをしていたのですね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※下図は、Ball1のEdgeReached/ColliderWithイベントの処理。

※関連コンテンツ

「App InventorによるAndroid開発入門」に戻る