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;
}

解説

1
ImageView.getX()

と、

1
ImageView.getY()

では、ImageViewの一番左上の座標が返却されます。

2つのオブジェクトが接触する際、接触面は、

右側と左側
左側と右側
上側と下側
下側と上側

となります。

そして、それぞれの面をコードで表すと、

1
2
3
4
ImageViewの右側 = ImageView.getX() + ImageView.getWidth()
ImageViewの左側 = ImageView.getX()
ImageViewの上側 = ImageView.getY()
ImageViewの下側 = ImageView.getY() + ImageView.getHeight()

このようになります。
よって、上記のソースコードのように記入することでImageViewの重なり判定、つまり、当たり判定を記述することができるというわけです。
ちょっとややこしいですね。