我的目标是如果门在附近则返回 true(门是游戏对象的子类,allObjectsInWorld 是一个 ArrayList,其中包含世界上的所有游戏对象,包括这扇门) 当我靠近门时我返回 false。 如果对象是门,则 get isdoor 返回 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;
}
最佳答案
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;
}
关于java - 使用 Point2D 中的距离将变量与数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006177/