動くターゲットに弾丸を発射する簡単なJavaゲームがあります。両方のオブジェクトはGRectsです。私はufoと弾丸が互いに交差するときをチェックする衝突検出を持っています、しかしここに奇妙さがあります:
これは機能します:
private void collideWithUFO() {
if (bullet != null) {
GObject collObj = getElementAt(ufo.getX(), ufo.getY());
if (collObj == bullet) {
remove(ufo);
remove(bullet);
ufo = null;
bullet = null;
}
}
}
..しかし、以下のように箇条書きに変更し、getElementAt
ufoを確認すると、衝突を検出できません。
private void collideWithUFO() {
if (bullet != null) {
GObject collObj = getElementAt(bullet.getX(), bullet.getY());
if (collObj == ufo) {
remove(ufo);
remove(bullet);
ufo = null;
bullet = null;
}
}
}
私が最初にufoを選ぶか弾丸を選ぶかは関係ないはずですが、明らかにそうではありません。今ここにさらに奇妙なものがあります。弾丸をGRectからGOvalに変更すると、突然、2番目の形式の衝突検出が機能します。私はJava初心者なので、この動作に意味があるかどうか教えてください。