2014-11-23 61 views
4

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

我已经做了这样的事情:

// 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); 
    } 

但结果是,效果成倍缩放,这是我不想要的。

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

+0

什么是Values.Scalar_Width? – noone 2014-11-24 08:39:30

回答

4

首先,我想解释为什么当前的方法不起作用。请注意,您用于缩放的方法名为scaleEffect,而不是setScale。每次调用它时,效果都会相对于当前状态进行缩放。当您使用混合粒子效果时,可以随着粒子的重用使用多次缩放效果。这就是为什么你看到它成倍增长。

因此,解决方案是只缩放您用作池的原型的粒子效果。例如:

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

然后,您不必缩放所获得的每个粒子效果。

+0

很好的答案,谢谢! – middlehut 2016-11-02 10:01:53