Geliştirdiğim bir oyun için rastgele oluşturulmuş bir ortam oluşturuyorum. OpenGLKullanı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 ArrayListile 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 Entityaşağıdaki sözdizimini takip eder:
new Entity(modelName, positionVector(x, y, z), rotX, rotY, rotZ, scaleX, scaleY, scaleZ);
rotXx ekseni boyunca dönüş ve x scaleXyönündeki ölçek vb.
Bu ağaçları random.nextFloat(), xve zkonumları 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 Entitybaşka bir alana sahip olabileceğini düşünüyordum treeTrunkGirthve eğer bir ağaç başka bir ağacın konumu ile konumu arasındaki mesafeye yerleştirilirse, treeTrunkGirthyeni 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.
treeTrunkGirthdeğişmeleri gerektiğinde ağaç yerleştirmek için minimum mesafeyi belirlemek için sabit yerine kullanın .

