長方形(四角形)にマウスが乗っているかどうかをif文を使って判定したいとします。一般的に長方形にマウスが乗ったら、というのをどう判定したらいいかと考えると、
①長方形の左辺よりmouseXが大きい
②長方形の右辺よりmouseXが小さい
③長方形の上辺よりmouseYが大きい
④長方形の下辺よりmouseYが小さい
の4つの条件が全て満たされた場合になります。この長方形の4つの辺の座標さえわかれば、その値とマウスの座標を比較することで「マウスが長方形に乗っているかどうか」が判定できるはずだとわかります。
長方形の左上の点にx, yという変数を使い、幅と高さにw, hを使う場合、rect()関数を使った命令は以下のようになります。
rect(x, y, w, h);
これを図で表すと下のようになります。
上の図の破線で示された4つの座標がわかれば長方形各辺の座標が出せそうです。これをx, y, w, hを使って考えると、
・長方形の左辺のx座標は x
・長方形の右辺のx座標は x + w
・長方形の上辺のy座標は y
・長方形の下辺のy座標は y + h
となります。これを使って先の4つの条件を考えると
① x < mouseX
② mouseX < x + w
③ y < mouseY
④ mouseY < y + h
というふうに表現できます。
この4つの条件が全て満たされた場合にマウスが長方形の上に乗っていることがわかるので、if文の条件式は以下のようになります。
if(x < mouseX && mouseX < x + w && y < mouseY && mouseY < y + h){
}
