libgdx でパーティクル システムを作成したいと考えています。libgdx にパーティクル クラスがあることは知っていますが、自分で作成したいと考えています。パーティクル システムは雪に関するものです。雪が 1 つだけ上から地面に落ち、左右に移動するクラスを作成します (ごくわずかです)。これは私のクラスです:
public class Particle implements ApplicationListener{
SpriteBatch batch;
Texture texture;
Random rand = new Random();
float randX = rand.nextFloat() * 480;
float randY = 322;
Pixmap circle;
boolean gravity = true;
Vector2 Vgravity;
Vector2 position;
float snowMovement;
int j = 1;
@Override
public void create() {
if (randX < 10) {
randX = 10;
}else if (randX > 460) {
randX = 460;
}
batch = new SpriteBatch();
circle = new Pixmap(4, 4, Pixmap.Format.RGB888);
texture = new Texture(circle);
circle.setColor(Color.WHITE);
circle.fillCircle(4/2, 4/2, 4/2);
texture.draw(circle, 0, 0);
texture.bind();
position = new Vector2(randX, randY);
//setGravity(gravity, new Vector2(0, -20));
}
public void setGravity(boolean gravity, Vector2 Vgravity){
this.Vgravity = Vgravity;
snowMovement = 60;
}
@Override
public void dispose() {
/*
texture.dispose();
circle.dispose();
batch.dispose();
*/
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render() {
float deltaTime = Gdx.graphics.getDeltaTime();
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(texture, position.x, position.y);
batch.end();
if (gravity) {
position.y += Vgravity.y * deltaTime;
position.x += snowMovement * j * deltaTime;
j *= -1;
}
}
@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
}
ここで、「Particle」クラス、たとえば 100 回を呼び出すクラスを作成します。でも…誰と呼べばいいのかわからない。私はこのコードを使用していますが、実行すると雪が 1 つしか表示されません。つまり、2番目の粒子は読み取れません。
public class Emitter extends Particle{
Particle part = new Particle();
Particle part2 = new Particle();
Array<Particle> particle = new Array<Particle>();
public void create(){
part.create();
part.setGravity(true, new Vector2(0, -20));
part2.create();
part2.setGravity(true, new Vector2(0, -20));
particle.add(part);
particle.add(part2);
}
public void render(){
for (int i = 0; i < particle.size; i++) {
Particle num = particle.get(i);
num.render();
}
}
}
「このクラスはほんの一例です...」
どこでそれを呼び出さなければならないのか、「Particle」クラスの問題があるのか 、それとも...
助けてください。