Я пытаюсь сделать определенное количество отображения PShapes в сцене, это делается с помощью клавиш от 0 до 9. Сами объекты действительно появляются, но респаункообразно. Я использую arrayList для их хранения. Я подозреваю, что что-то не так с цикл, который считывает форму из массива ... но я не могу понять это ...Контрольное число PShapes в сцене с ключевым входом
import java.io.*;
import java.util.Random;
import java.util.ArrayList;
Random rnd = new Random();
PShape torus;
int nTorus;
ArrayList<PShape> toruses;
void settings() {
size(640, 480, P3D);
}
void setup() {
toruses = new ArrayList();
}
void draw() {
background(0);
for (PShape torus : toruses) {
pushMatrix();
translate((int)(rnd.nextDouble() * 1000-1000), (int)(rnd.nextDouble() * 1000-1000), (int)(rnd.nextDouble() * 1000-1000));
shape(torus);
popMatrix();
}
}
void keyPressed() {
if (key == '1') {
nTorus = 1;
} else if (key == '2') {
nTorus = 2;
} else if (key == '3') {
nTorus = 3;
} else if (key == '4') {
nTorus = 4;
} else if (key == '5') {
nTorus = 5;
} else if (key == '6') {
nTorus = 6;
} else if (key == '7') {
nTorus = 7;
} else if (key == '8') {
nTorus = 8;
} else if (key == '9') {
nTorus = 9;
} else if (key == '0') {
nTorus = 0;
}
toruses.clear();
for (int i = 0; i < nTorus; i++) {
PShape tShape = getTorus((int)(rnd.nextDouble() * 200+50), (int)(rnd.nextDouble() * 100+50), 32, 32);
toruses.add(tShape);
}
}
Привет, спасибо за помощь. Мне удалось заставить их появиться на сцене и не возродиться, как сумасшедшие. Однако, если я устанавливаю случайное местоположение, которое нужно установить, оно возвращается снова к респавнению ... Я использую push/popMatrix и trasnlations, чтобы сделать это. – eneko
@eneko Я предлагаю задать новый вопрос. Начните с [MCVE] (http://stackoverflow.com/help/mcve), который я вам дал, и добавляю столько кода, сколько необходимо для повторения проблемы. Вам будет намного легче помочь вам. –
Получил работу, спасибо! Подход был приятным и простым. – eneko