我想要缩放粒子效果- Libgdx

4

我的问题其实很简单——我有一个粒子特效,在小屏幕上看起来很好,但在我的私人手机(三星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);
   }

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

我只想缩放效果,使其在所有屏幕上看起来相同。我该如何实现?


Values.Scalar_Width是什么? - noone
1个回答

4
首先,我想解释一下为什么当前的方法不起作用。请注意,你用于缩放的方法名为scaleEffect而不是setScale。每次调用该方法时,效果都将相对于其当前状态进行缩放。当你使用池化粒子效果时,你会像粒子被重复使用了多少次就缩放多少次。这就是为什么你会看到它呈指数级增长的原因。
因此,解决方法是只缩放用作池的原型粒子效果。类似这样:
prototypeEffect.scaleEffect(Values.Scalar_Width * 1.3f);
ParticleEffectPool yellow_star_pool = new ParticleEffectPool(prototypeEffect, 10, 100);

那么,你就不需要缩放获得的每个粒子效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接