Android SDK標準のImageViewによる、当たり判定の実装をします。
前提
2つのImageViewでの当たり判定を実装します。
それぞれ、名前を
- me …… 自機
- enemy …… 敵
とします。
書き方
1
2
3
4
5
6
7
8
9
| private boolean isTouchEnemy() {
if (me.getX() < (enemy.getX() + enemy.getWidth())
&& me.getX()+me.getWidth() > (enemy.getX())
&& me.getY() < (enemy.getY() + enemy.getHeight())
&& me.getY()+me.getHeight() > (enemy.getY()))
return true;
}
return false;
}
|
解説
と、
では、ImageViewの一番左上の座標が返却されます。
2つのオブジェクトが接触する際、接触面は、
右側と左側
左側と右側
上側と下側
下側と上側
となります。
そして、それぞれの面をコードで表すと、
1
2
3
4
| ImageViewの右側 = ImageView.getX() + ImageView.getWidth()
ImageViewの左側 = ImageView.getX()
ImageViewの上側 = ImageView.getY()
ImageViewの下側 = ImageView.getY() + ImageView.getHeight()
|
このようになります。
よって、上記のソースコードのように記入することでImageViewの重なり判定、つまり、当たり判定を記述することができるというわけです。
ちょっとややこしいですね。