Geliştirdiğim bir oyun için rastgele oluşturulmuş bir ortam oluşturuyorum. OpenGL
Kullanıyorum ve kod yazıyorum Java
.
(Orman oluşturmak için) dünyama rastgele ağaçlar yerleştirmeye çalışıyorum, ancak modellerin üst üste gelmesini istemiyorum (iki ağaç birbirine çok yakın yerleştirildiğinde gerçekleşir). İşte bahsettiğim şeyin bir resmi:
Gerekirse daha fazla kod sağlayabilirim, ancak burada temel snippet'ler var. Ben nesneleri bir ArrayList
ile saklıyorum List<Entity> entities = new ArrayList<Entity>();
. Daha sonra kullanarak bu listeye ekliyorum:
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);
}
burada her biri Entity
aşağıdaki sözdizimini takip eder:
new Entity(modelName, positionVector(x, y, z), rotX, rotY, rotZ, scaleX, scaleY, scaleZ);
rotX
x ekseni boyunca dönüş ve x scaleX
yönündeki ölçek vb.
Bu ağaçları random.nextFloat()
, x
ve z
konumları için rastgele yerleştirdiğimi ve aralığı sınırlandırdığımı görebilirsiniz, böylece ağaçlar istenen konumda görünecektir. Ancak, bir şekilde bu pozisyonları kontrol etmek istiyorum, böylece daha önce yerleştirilmiş bir ağaca çok yakın bir ağaç yerleştirmeye çalışırsa, yeni bir rastgele pozisyonu yeniden hesaplar. Her ağacın Entity
başka bir alana sahip olabileceğini düşünüyordum treeTrunkGirth
ve eğer bir ağaç başka bir ağacın konumu ile konumu arasındaki mesafeye yerleştirilirse, treeTrunkGirth
yeni bir pozisyonu yeniden hesaplar. Bunu başarmanın bir yolu var mı?
Gerektiğinde daha fazla kod parçacığı ve ayrıntı eklemek için mutluyum.
treeTrunkGirth
değişmeleri gerektiğinde ağaç yerleştirmek için minimum mesafeyi belirlemek için sabit yerine kullanın .