我的目标是在门附近时返回true(门是游戏对象的子类,而allObjectsInWorld是包含世界上所有游戏对象的ArrayList,包括此门) 当我靠近门时,我会回复假。 如果对象是门,则get is door返回true
GameObject.position是一个Point2D点
public boolean isDoorNear(GameObject user) {
boolean tempBoo = false;
for(int i = 0; i < allObjectsInWorld.size();i++) {
GameObject a = (GameObject) allObjectsInWorld.get(i); //checks to see if something is there
if( user.position.distance(a.position) <= 2.0 && a.isDoor) {
tempBoo = true;
}
else {
tempBoo = false;
}
}
return tempBoo;
}
答案 0 :(得分:1)
行tempBoo = false
不好:即使之前检测到某个门,它也会将返回值更改为true
。只需依靠初始化即可提供false
的默认返回,除非附近有任何门。
但是你可以通过提前返回完全避免所有tempBoo
内容:
public boolean isDoorNear(GameObject user) {
for(int i = 0; i < allObjectsInWorld.size();i++) {
GameObject a = (GameObject) allObjectsInWorld.get(i);
if( user.position.distance(a.position) <= 2.0 && a.isDoor)
return true;
}
return false;
}