距離と、プレイヤーがバリアに衝突したかどうかをチェックするプログラムがあります。私は今、バリアの配列内のどのバリアが移動中のプレーヤーに最も近いかを計算し、そのバリアのインデックスを返すことを試みています。
これが私がこれまでに持っているものです:
public static int closestBarrier(GameObject object, GameObject[] barriers)
// TODO stub
{
int closest = 0;
for (int i = 0; i < barriers.length - 1; i++) {
if (Math.sqrt((object.getX() - barriers[i].getX())
* (object.getX() - barriers[i].getX()))
+ ((object.getY() - barriers[i].getY()) * (object.getY() - barriers[i]
.getY())) <= Math
.sqrt((object.getX() - barriers[i + 1].getX())
* (object.getX() - barriers[i + 1].getX()))
+ ((object.getY() - barriers[i + 1].getY()) * (object
.getY() - barriers[i + 1].getY()))) {
closest = i;
} else
closest = i + 1;
}
return closest;
}
私はまだJavaに慣れていないので、私がすでに持っているものはおそらくあまり効率的ではないか、それを行うための最良の方法ではないことを理解しています(またはまったく正しくありません!?)。