我在libGDX中遇到了粒子问题。基本上他们根本没有显示,我不明白为什么。
我使用Scene2D并创建了Particles actor:http://wklej.org/id/1534258/
我是这样创建的:particleTest = new ParticleEffectActor("test.p");
在我的游戏中,我有2个gui阶段。我在屏幕的show()方法中为所有这些添加了粒子:
menuStage.addActor(particleTest);
gameGuiStage.addActor(particleTest);
我的游戏还有另一个阶段(按pixelPerMeter值缩放)。我试着像这样添加它:
effect = new ParticleEffectActor("powerup.p");
gameWorld.getWorldStage().addActor(effect);
在这种情况下,我提出了一些定位但却没有效果的技巧。
有什么问题?谢谢你的帮助
答案 0 :(得分:1)
我终于设法制作了一个工作版本:
这里是演员;
package com.apptogo.runner.actors;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.ParticleEffect;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
public class ParticleEffectActor extends Image {
private ParticleEffect effect;
public ParticleEffectActor(String particleName) {
super();
effect = new ParticleEffect();
effect.load(Gdx.files.internal("gfx/game/particles/" + particleName), Gdx.files.internal("gfx/game/particles"));
this.setVisible(false);
}
@Override
public void scaleBy(float scaleFactor){
effect.scaleEffect(scaleFactor);
}
@Override
public void setPosition(float x, float y){
super.setPosition(x, y);
effect.setPosition(x, y);
}
public void start() {
effect.start();
}
@Override
public void act(float delta) {
super.act(delta);
effect.update(delta);
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
effect.draw(batch);
}
public ParticleEffect getEffect(){ return this.effect; }
}
这就是我使用它的方式:
effectActor = new ParticleEffectActor("test.p");
effectActor.scaleBy(1/PPM);
gameWorld.getWorldStage().addActor(effectActor);
和effectActor.setPosition(getX() + getWidth()/2, getY() + getHeight()/2);
in act()