我想缩放ParticleEffect - Libgdx

时间:2014-11-23 22:18:10

标签: libgdx scale scaling particles

基本上我的问题很简单 - 我有一个在小屏幕上看起来不错的ParticleEffect但在我的私人电话(三星S4)上它看起来很小。我的问题是:我如何缩放效果?

我已经做过类似的事了:

// Callback method
   public void addEffect(Vector2 position, boolean special) {
      // Callback Method for the particle effects
      PooledEffect effect;
      if (!special)
         effect = (MathUtils.random(0, 1) == 0) ? yellow_star_pool.obtain()
               : green_star_pool.obtain();
      else
         effect = special_star_pool.obtain();
      effect.setPosition(position.x, position.y);
      effect.scaleEffect(Values.Scalar_Width*1.3f);
      effects.add(effect);
   }

但结果是效果呈指数级缩放,这是我不想要的。

我只想缩放效果,以便在所有屏幕上看起来都一样。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

首先,我想解释为什么目前的方法不起作用。请注意,用于缩放的方法名为scaleEffect,而不是setScale。每次调用它时,效果都会相对于当前状态进行缩放。当您使用合并的粒子效果时,您可以在重复使用粒子时多次缩放效果。这就是为什么你看到它以指数方式缩放的原因。

因此,解决方案是仅缩放您用作池原型的粒子效果。类似的东西:

prototypeEffect.scaleEffect(Values.Scalar_Width * 1.3f);
ParticleEffectPool yellow_star_pool = new ParticleEffectPool(prototypeEffect, 10, 100);

然后你没有必要缩放你获得的每个粒子效果。