Saya membuat lingkungan yang dibuat secara acak untuk game yang saya kembangkan. Saya menggunakan OpenGLdan mengkode Java.
Saya mencoba menempatkan pohon secara acak di dunia saya (untuk membuat hutan), tetapi saya tidak ingin modelnya tumpang tindih (yang terjadi ketika dua pohon ditempatkan terlalu dekat satu sama lain). Inilah gambar dari apa yang saya bicarakan:
Saya dapat memberikan lebih banyak kode jika perlu, tetapi ini cuplikan penting. Saya menyimpan objek saya ArrayListdengan List<Entity> entities = new ArrayList<Entity>();. Saya kemudian menambahkan ke daftar itu menggunakan:
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);
}
di mana masing-masing Entitymengikuti sintaks berikut:
new Entity(modelName, positionVector(x, y, z), rotX, rotY, rotZ, scaleX, scaleY, scaleZ);
rotXadalah rotasi sepanjang sumbu x, dan scaleXskala dalam arah x, dll.
Anda dapat melihat bahwa saya menempatkan pohon-pohon ini secara acak dengan random.nextFloat()untuk xdan zposisi, dan membatasi rentang sehingga pohon-pohon akan muncul di lokasi yang diinginkan. Namun, saya ingin entah bagaimana mengontrol posisi-posisi ini, sehingga jika ia mencoba menempatkan pohon terlalu dekat dengan pohon yang ditempatkan sebelumnya, itu akan menghitung ulang posisi acak baru. Saya berpikir bahwa setiap pohon Entitydapat memiliki bidang lain, seperti treeTrunkGirth, dan jika pohon ditempatkan pada jarak antara lokasi pohon lain dan itu treeTrunkGirth, maka itu akan menghitung ulang posisi baru. Apakah ada cara untuk menyelesaikan ini?
Saya senang menambahkan potongan kode dan detail yang diperlukan.
treeTrunkGirthbukan konstanta untuk menentukan jarak minimum untuk menempatkan pohon jika mereka perlu bervariasi.

