개발중인 게임을 위해 무작위로 생성 된 환경을 만들고 있습니다. 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 축을 따른 회전이며 scaleX
x 방향의 배율 등입니다.
당신은 내가 함께 무작위로이 나무를 배치하고 있음을 알 수 random.nextFloat()
에 x
와 z
위치, 그리고 나무가 원하는 위치에 나타납니다 있도록 범위를 경계. 그러나 어떻게 든이 위치를 제어하고 싶습니다. 따라서 이전에 배치 된 나무에 너무 가까운 나무를 배치하려고하면 새로운 임의의 위치가 다시 계산됩니다. 나는 각 나무 Entity
가과 같은 다른 필드를 가질 수 있다고 생각하고 있었고 treeTrunkGirth
, 나무가 다른 나무의 위치와의 거리 사이에 treeTrunkGirth
있으면 새로운 위치를 다시 계산할 것입니다. 이것을 달성 할 수있는 방법이 있습니까?
필요에 따라 더 많은 코드 스 니펫과 세부 정보를 추가하게되어 기쁩니다.
treeTrunkGirth
상수 대신 트리를 사용하여 나무를 배치해야하는 최소 거리를 결정하십시오.