我正在为正在开发的游戏创建随机生成的环境。我正在使用OpenGL
和编码Java
。
我试图将树木随机放置在我的世界中(以创建森林),但是我不希望模型重叠(当两棵树之间的距离太近时会发生这种情况)。这是我在说什么的图片:
如果需要,我可以提供更多代码,但这是必要的代码片段。我存储在我的对象ArrayList
有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轴的旋转,是x方向scaleX
上的比例,等等。
您会看到我将这些树随机放置random.nextFloat()
在x
和z
位置,并限制了范围,以便树将出现在所需的位置。但是,我想以某种方式控制这些位置,以便如果它试图将树放置得过于靠近先前放置的树,它将重新计算新的随机位置。我以为每棵树Entity
都可以有另一个字段,例如treeTrunkGirth
,并且如果将树放置在另一棵树的位置与其的距离之内treeTrunkGirth
,那么它将重新计算一个新位置。有没有办法做到这一点?
我很高兴根据需要添加更多代码段和详细信息。
treeTrunkGirth
如果需要改变树木的距离,请使用而不是常数来确定最小距离。