2014-11-22 4 views
0

libGDX의 입자에 문제가 있습니다. 기본적으로 그들은 전혀 보여주지 못하고 이유를 모르겠습니다. LibGDX 입자가 표시되지 않습니다.

나는 Scene2D를 사용하고 난 입자 배우 생성 : 나는 2 GUI 단계가 내 게임에서 particleTest = new ParticleEffectActor("test.p");

: http://wklej.org/id/1534258/

나는이처럼 만듭니다.

나는 또한 내 게임의 또 다른 무대가
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);

()

관련 문제