Sto creando un ambiente generato casualmente per un gioco che sto sviluppando. Sto usando OpenGLe codificando Java.
Sto cercando di posizionare casualmente alberi nel mio mondo (per creare una foresta), ma non voglio che i modelli si sovrappongano (cosa che accade quando due alberi sono posizionati troppo vicini l'uno all'altro). Ecco una foto di ciò di cui sto parlando:
Posso fornire più codice se necessario, ma ecco i frammenti essenziali. Sto conservando i miei oggetti in un ArrayListcon List<Entity> entities = new ArrayList<Entity>();. Aggiungo quindi a tale elenco utilizzando:
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);
}
dove ciascuno Entitysegue la seguente sintassi:
new Entity(modelName, positionVector(x, y, z), rotX, rotY, rotZ, scaleX, scaleY, scaleZ);
rotXè la rotazione lungo l'asse x, ed scaleXè la scala nella direzione x, ecc.
Si può vedere che sto mettendo questi alberi in modo casuale con random.nextFloat()le xe zposizioni, e che delimita il campo in modo appariranno gli alberi nella posizione desiderata. Tuttavia, vorrei in qualche modo controllare queste posizioni, in modo che se provi a posizionare un albero troppo vicino a un albero precedentemente posizionato, ricalcolerà una nuova posizione casuale. Stavo pensando che ogni albero Entitypotrebbe avere un altro campo, come treeTrunkGirth, e se un albero viene posizionato in lontananza tra la posizione di un altro albero ed è treeTrunkGirth, allora ricalcolerà una nuova posizione. C'è un modo per raggiungere questo obiettivo?
Sono felice di aggiungere ulteriori frammenti di codice e dettagli se necessario.
treeTrunkGirthinvece di una costante per determinare la distanza minima per posizionare un albero se è necessario variare.

