Tworzę losowo generowane środowisko dla gry, którą tworzę. Używam OpenGLi koduję Java.
Staram się losowo umieszczać drzewa w moim świecie (aby utworzyć las), ale nie chcę, aby modele nakładały się (co dzieje się, gdy dwa drzewa są umieszczone zbyt blisko siebie). Oto zdjęcie tego, o czym mówię:
W razie potrzeby mogę podać więcej kodu, ale oto niezbędne fragmenty. I 'm przechowywanie moje obiekty w ArrayListz List<Entity> entities = new ArrayList<Entity>();. Następnie dodaję do tej listy, używając:
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);
}
gdzie każdy Entityma następującą składnię:
new Entity(modelName, positionVector(x, y, z), rotX, rotY, rotZ, scaleX, scaleY, scaleZ);
rotXoznacza obrót wzdłuż osi x, i scaleXjest skalą w kierunku x itp.
Widać, że jestem umieszczenie tych drzew losowo z random.nextFloat()za xi zstanowisk, a ograniczająca zakres więc drzewa pojawią się w odpowiednim miejscu. Chciałbym jednak jakoś kontrolować te pozycje, aby jeśli spróbuje umieścić drzewo zbyt blisko poprzednio umieszczonego drzewa, przeliczy nową pozycję losową. Myślałem, że każde drzewo Entitymoże mieć inne pole, na przykład treeTrunkGirth, a jeśli drzewo zostanie umieszczone w odległości między lokalizacją innego drzewa, a ono treeTrunkGirth, wówczas ponownie obliczy nową pozycję. Czy istnieje sposób na osiągnięcie tego?
W razie potrzeby chętnie dodam więcej fragmentów kodu i szczegółów.
treeTrunkGirthZamiast stałej należy również użyć minimalnej odległości do umieszczenia drzewa, jeśli muszą się różnić.

