Quiero escalar ParticleEffect-Libgdx
scale scaling (1)
Primero, quiero explicar por qué el enfoque actual no funciona. Tenga en cuenta que el método que usa para escalar se denomina scaleEffect
, not setScale
. Cada vez que lo llame, el efecto se escalará en relación con su estado actual. Cuando usa efectos de partículas agrupados, escala el efecto tantas veces como se haya reutilizado la partícula. Es por eso que lo ves escalando exponencialmente.
Entonces, la solución es escalar solo el efecto de partículas que usas como prototipo para el conjunto. Algo como:
prototypeEffect.scaleEffect(Values.Scalar_Width * 1.3f);
ParticleEffectPool yellow_star_pool = new ParticleEffectPool(prototypeEffect, 10, 100);
Entonces no tienes que escalar cada efecto de partícula que obtienes.
Básicamente, mi problema es simple: tengo un ParticleEffect que se ve bien en una pantalla pequeña, pero en mi teléfono privado (Samsung S4) parece muy pequeño. Mi pregunta es: ¿cómo puedo escalar el efecto?
Ya he hecho algo como esto:
// 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);
}
Pero el resultado es que el efecto está escalando exponencialmente, algo que no quiero.
Solo quiero que el efecto se escale para que se vea igual en todas las pantallas. ¿Cómo puedo lograr eso?