開発中のゲーム用にランダムに生成された環境を作成しています。で使用OpenGL
してコーディングしていJava
ます。
(森を作成するために)私の世界にランダムに木を配置しようとしていますが、モデルを重複させたくありません(2つの木が互いに近すぎて配置されている場合に起こります)。これが私が話していることの写真です:
必要に応じてさらに多くのコードを提供できますが、ここに重要なスニペットがあります。オブジェクトをArrayList
withに保存していますList<Entity> entities = new ArrayList<Entity>();
。次に、次を使用してそのリストに追加します。
Random random = new Random();
for (int i = 0; i < 500; i++) {
entities.add(new Entity(tree, new Vector3f(random.nextFloat() * 800 - 400,
0, random.nextFloat() * -600), 0, random.nextFloat() * 360, 0, 3, 3, 3);
}
ここで、それぞれEntity
は次の構文に従います。
new Entity(modelName, positionVector(x, y, z), rotX, rotY, rotZ, scaleX, scaleY, scaleZ);
rotX
x軸に沿った回転scaleX
、x方向のスケールなどです。
あなたは私がランダムにこれらの木を配置していていることがわかりますrandom.nextFloat()
ためx
とz
位置、および樹木が所望の位置に表示されますので、範囲の境界を示します。ただし、これらの位置を何らかの方法で制御したいので、以前に配置したツリーに近すぎるツリーを配置しようとすると、新しいランダムな位置が再計算されます。各ツリーにEntity
はなどの別のフィールドがある可能性があると考えていました。ツリーがtreeTrunkGirth
別のツリーの場所との間の距離に配置されている場合treeTrunkGirth
、新しい位置が再計算されます。これを達成する方法はありますか?
必要に応じて、コードスニペットと詳細をさらに追加できます。
treeTrunkGirth
変化する必要がある場合は、定数の代わりにを使用して、ツリーを配置するための最小距離を決定します。