LibGDX粒子不显示

时间:2014-11-22 23:27:53

标签: java android libgdx particles

我在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);

在这种情况下,我提出了一些定位但却没有效果的技巧。

有什么问题?谢谢你的帮助

1 个答案:

答案 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()