2014-11-22 65 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);

()