Table of Contents
はじめに
前回まで(こちら)で開発環境構築は一通り終わったので、今回はゲームアプリを作ろうと思います。
とは言っても、小生はゲームアプリを作ったことがない初心者なので、参考になるサイトを探したところ、以下サイトが非常に親切で分かりやすかったので参考にしてゲームアプリを開発しました。
参考サイト
【作って学べる】Android Studio ゲームアプリ開発入門 | Code for Fun
https://codeforfun.jp/android-studio-catch-the-ball-intro/
↑が参考サイトで作ることができる「Catch the Ball」というゲームです。BOX(画面左のオブジェクト)を動かして画面右から流れてくるボールを捕まえて得点を獲得するゲームとなっています。BOXはタッチしている間のみ上昇し、タッチしていないと下降する仕様です。
アプリ改造
一度参考サイトの通りに作成(※ワーニングの解決や、効果音を付けるのは省略しました)できましたが、独自に改造したいと思い、タッチに追従してBOXを上下に自由に動かせるようにしました。(ついでに、ボールの種類を増やして、BOXやボールの画像を変更しました。)
上記が実際に完成した、「果物集め遊び」を実機で遊んでいる録画となります。(画面録画アプリを使用して撮影してます)
右側にたまに出てくる〇は、タッチしているときに出るマークです。タッチに追従してBOXが上下に動いて、その位置に来たボールの点数が加点されるようになりました。
コード修正箇所
大きく修正したのが、タッチで追従することですので、その箇所のみの紹介となります。
※私が独自に追加したもの以外は、参考サイト通りのファイル名や変数名を使用していますので、先に参考サイトをご一読ください。

BOXはタッチで追従させるため、まず、MainActivity.javaのchangePosメソッドで、BOXを動かす(上昇・下降)らへんのコードは削除しました。

同じくMainActivity.javaのonTouchEventメソッドですが、if (!start_flg)のelse側の処理を大きく変更しています。
action_flgを使用していたコードはさきほど削除したので、こちらも同様に削除しています。
最初はif文で、ACTION_DOWN(=タッチしたとき)とACTION_UP(=タッチを離したとき)でわかれていたのですが短く書きたかったためswitch文に変更し、タッチしている間の処理が必要だったので、ACTION_MOVEの分岐を追加しました。
239行目で、dYという変数を新規に追加していますが、移動開始前のBOXのY座標からタッチ位置の座標を引いた値を格納しています。
241~244行目が、タッチ移動時の処理ですが、現在のタッチ位置にさきほど取得したdYの値を加算して、BOXのY軸位置がタッチに追従するようになっています。また、ボールヒット判定でよく使用されている変数boxYの値も、BOXの現在の位置のY座標で更新しています。
以上がタッチ追従に関する修正箇所です。
さいごに
見た目は簡単そうなアプリなのに、ゲームアプリとなると結構いろいろなことに気を使わなくてはならなくて、ゼロから開発するのは難しく感じました。(参考サイトさまに感謝です。)
また、自分なりの機能を組み込むとなると結構時間がかかってしまいました。またほかのアプリなども開発してみたいと思います。
ではまた。