【问题标题】:LibGDX particles do not showLibGDX 粒子不显示
【发布时间】:2014-11-22 23:27:52
【问题描述】:

我对 libGDX 中的粒子有疑问。基本上它们根本不显示,我不知道为什么。

我使用 Scene2D 并创建了粒子 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);

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

怎么了?感谢帮助

【问题讨论】:

    标签: java android libgdx particles


    【解决方案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);

    在act()中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      相关资源
      最近更新 更多