nel mio gioco in 2D che sto usando strumenti grafici per creare bello, terreno morbido rappresentato dal colore nero: curva di terreno a matrice di punti
semplice algoritmo scritto in java cerca colore nero ogni 15 pixel, creando seguente serie di linee (grigio):
Come si può vedere, ci sono alcuni luoghi che sono mappati molto male, alcuni sono piuttosto buone. In altri casi non sarebbe necessario campionare ogni 15 pixel, ad es. se il terreno è pianeggiante.
Qual è il modo migliore per nascondere questa curva a un insieme di punti [linee], utilizzando il minor numero di punti possibile? campionamento ogni 15 pixel = 55 FPS, 10 pixel = 40 fps
seguente algoritmo sta facendo quel lavoro, il campionamento da destra a sinistra, l'output pasteable in una matrice di codice:
public void loadMapFile(String path) throws IOException {
File mapFile = new File(path);
image = ImageIO.read(mapFile);
boolean black;
System.out.print("{ ");
int[] lastPoint = {0, 0};
for (int x = image.getWidth()-1; x >= 0; x -= 15) {
for (int y = 0; y < image.getHeight(); y++) {
black = image.getRGB(x, y) == -16777216 ? true : false;
if (black) {
lastPoint[0] = x;
lastPoint[1] = y;
System.out.print("{" + (x) + ", " + (y) + "}, ");
break;
}
}
}
System.out.println("}");
}
Im in via di sviluppo su Android, utilizzando Java and AndEngine
ciò che 'campionamento ogni 15 pixel = 55 FPS, 10 pixel = 40 FPS' dire? Dice che il campionamento è inversamente proporzionale a FPS? – SparKot
Altri campioni = più righe = più oggetti = meno FPS. Scusa se il mio inglese non descrive il problema. Il terreno –
viene memorizzato come dati di gioco o generato casualmente durante il gioco? – SparKot