【问题标题】:Libgdx: Flip Particle at y axisLibgdx:在 y 轴翻转粒子
【发布时间】:2018-01-03 08:19:03
【问题描述】:

我目前正在尝试翻转粒子效果(libgdx API)。 到目前为止效果很好:新创建的粒子被正确翻转,因为我更改了发射器的参数。但我也想翻转已经存在的粒子。

创建的粒子在 ParticleEmitter 类之外不可用,所以我决定复制代码并复制 ParticleEmitter 类。

所以我的代码如下所示:

    ParticleEmitter emitter;

    for (int i = 0; i < getEmitters().size; i++) {

        emitter = getEmitters().get(i);


        // change already existing particles:

        Particle[] particles = emitter.getParticles();
        boolean[] active = emitter.getActive();
        for (int j = 0, n = active.length; j < n; j++) {
            if (active[j] == true) {
                Particle particle = particles[j];

                // Here I have to do something with the particle



            }
        }

        // change emitter parameters for new created particles: 

        /*
        *
        *  emitter.setValue(...)
        *
        */
    }

也许你有个好主意?谢谢:)

【问题讨论】:

  • 我不知道你所说的翻转粒子是什么意思,更不知道你的实际问题是什么。我目前的想法更多地涉及我今晚的晚餐计划,所以当然,我有一个好主意,但它对你没有帮助,afaik。只是一个提示:您可能想学习编写这样的代码: if (active[j] == true) as if (active[j] )
  • 谢谢,粒子效果已定位,参数描述了发射粒子的飞行方向(例如风或重力)。粒子效果可能有多个发射器,因此您必须对它们进行迭代。然后在底部我改变了参数,所以所有新的射弹都会受到这些变化的影响,但是当前的粒子也应该受到翻转的影响,这就是我试图弄清楚的一点。

标签: java libgdx effect particles


【解决方案1】:

如果要翻转所有粒子,请尝试ParticleEmitter 的 scaleSize 方法:

// Horizontal (X)
emitter.scaleSize(-1, 1);

// Vertical (Y)
emitter.scaleSize(1, -1);

你也可以使用flip(..)翻转单个粒子:

particle.flip(true, false); // X
particle.flip(false, true); // Y

【讨论】:

  • 谢谢,不幸的是 scaleSize 方法只管理与尺寸相关的发射参数。 Particle(扩展Sprite)的翻转方法有助于翻转实际的精灵,谢谢! - 但位置和速度保持不变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
相关资源
最近更新 更多