2014-11-23 60 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