2014-11-22 69 views
0

我在libGDX中遇到粒子问题。基本上他们根本不显示,我不知道为什么。LibGDX粒子不显示

我用Scene2D和我产生的粒子演员:http://wklej.org/id/1534258/

我创造这样的:particleTest = new ParticleEffectActor("test.p");

在我的游戏我有2个GUI阶段。我添加颗粒它们都在显示屏幕()方法:

menuStage.addActor(particleTest); 
gameGuiStage.addActor(particleTest); 

我也有我的游戏另一个阶段(由pixelPerMeter值进行调整)。我试图像这样添加它: effect = new ParticleEffectActor("powerup.p"); gameWorld.getWorldStage().addActor(effect);

在这种情况下,我也尝试了一些定位的技巧,但仍然没有效果。

出了什么问题?感谢您的帮助

回答

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

()