Fix VanishEffect looking awkward due to the interpolation used
This commit is contained in:
parent
739077f612
commit
ea2ddb8554
1 changed files with 12 additions and 2 deletions
|
@ -5,6 +5,7 @@ import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
import com.badlogic.gdx.math.Interpolation;
|
import com.badlogic.gdx.math.Interpolation;
|
||||||
|
import com.badlogic.gdx.math.MathUtils;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
|
||||||
import io.github.lonamiwebs.klooni.game.Cell;
|
import io.github.lonamiwebs.klooni.game.Cell;
|
||||||
|
@ -17,6 +18,8 @@ public class VanishEffect implements IEffect {
|
||||||
private float vanishElapsed;
|
private float vanishElapsed;
|
||||||
private float vanishLifetime;
|
private float vanishLifetime;
|
||||||
|
|
||||||
|
private final static float MINIMUM_SIZE = 0.3f;
|
||||||
|
|
||||||
public VanishEffect() {
|
public VanishEffect() {
|
||||||
vanishElapsed = Float.POSITIVE_INFINITY;
|
vanishElapsed = Float.POSITIVE_INFINITY;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +52,14 @@ public class VanishEffect implements IEffect {
|
||||||
float progress = Math.min(1f,
|
float progress = Math.min(1f,
|
||||||
Math.max(vanishElapsed, 0f) / vanishLifetime);
|
Math.max(vanishElapsed, 0f) / vanishLifetime);
|
||||||
|
|
||||||
vanishSize = Interpolation.elasticIn.apply(cell.size, 0, progress);
|
// If one were to plot the elasticIn function, they would see that the slope increases
|
||||||
|
// a lot towards the end- a linear interpolation between the last size + the desired
|
||||||
|
// size at 20% seems to look a lot better.
|
||||||
|
vanishSize = MathUtils.lerp(
|
||||||
|
vanishSize,
|
||||||
|
Interpolation.elasticIn.apply(cell.size, 0, progress),
|
||||||
|
0.2f
|
||||||
|
);
|
||||||
|
|
||||||
float centerOffset = cell.size * 0.5f - vanishSize * 0.5f;
|
float centerOffset = cell.size * 0.5f - vanishSize * 0.5f;
|
||||||
Cell.draw(vanishColor, batch, cell.pos.x + centerOffset, cell.pos.y + centerOffset, vanishSize);
|
Cell.draw(vanishColor, batch, cell.pos.x + centerOffset, cell.pos.y + centerOffset, vanishSize);
|
||||||
|
@ -57,6 +67,6 @@ public class VanishEffect implements IEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDone() {
|
public boolean isDone() {
|
||||||
return vanishElapsed > vanishLifetime;
|
return vanishSize < MINIMUM_SIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue