10日間でAndroidゲームネイティブ制作に挑戦(画像タッチ編)

 こんにちは。星野耀司です。

 さて前回は貝を配置することができました。なので今回は貝をタッチしたら別の場所にワープさせたいと思います。
UIが完成したら、これを利用してスコア等も作ろうと思います。
完全にアクションゲームではなくなりそうですね。

 私がまず最初に画像タッチを認識させる方法として考えたものは、座標を記録して、その座標をクリックしたら画像を移動させるということでした。

「画面上の座標が分かれば判定は簡単だ!」

そう思ったのですが…。
まずどれが画面上の座標なのかわかりませんでした。
xmlを見たらwidth、height、marginEnd、marginRight,_marginBottom等、様々なものがありました。
widthは横、height縦だとしても、他のものについてはまず文字がよく分からない上、調べても直接画像の座標を取得できそうなものではありませんでした。
widthやheightは、どこにいても数字が変わらなかったため、画像の大きさであることが分かりました。

 座標取得のために何か別の変数があるのか、それともさっきのEnd、Right、Bottomの中で計算しなければならないのか、など様々なことを調べてみました。
xやyで表現されているととても分かりやすかったのですがね…。
おそらくxmlに慣れている人はわかると思います。
しかしx、y とか座標とかどうでもよくなるとんでもなく便利な変数がありました。
setOnClickListener
View.OnClickListener()

いやunity等には同じようなのがありましたがまさかこっちにもこんなものがあるとは思いませんでした。しかもこれはImageView自体にクリックイベントリックイベントを追加するというものなのでした。
これのいいところは当たり判定などをあまり気にしなくてよくなるところです。
なぜなら画像自体につけているから。
凝った当たり判定を付けたいのなら話は別ですが、今の私にとっては十分なものでした。
1~2時間座標関連で調べ続けていた私の努力はどこへ。

ということで今回はクリックイベントを追加することに成功しました。
しかし、これができたからと言って簡単にもう終わりというものではありませんでした。
画像を画面内に移動させなければならないのです。
いやいや前回移動させる術は学んだじゃないですか。という人もいるかと思いますが思い出してみてください。
setXやsetYは現在の画像の位置に影響されて画像を移動させるのです。
画像は前調整した位置から動いていますし、動いた位置はランダムです。
要するに画面外に簡単に出ます。setX、Yでは制御不可です。
…完全に前回楽したツケが回ってきているような気がします。
というわけで今度は画面外に出ないように移動させる術を探してこようと思います。
それが見つかったら前回のところも修正しなければならないかもしれませんね。
見つかったら次回はそれを紹介しようと思います。
今回はいい感じの経験を身に着けることができたと思いますね。

ではまた次回

興味を持たれた方はお気軽にお問い合わせください。

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー