@Override public void update(int delta) { elapsed += delta/1000f; i1.setRotation(elapsed * FloatMath.PI/2); s1.setRotation(elapsed * FloatMath.PI/2); g2.setWidth(Math.round(Math.abs(100 * FloatMath.sin(elapsed)))); inner.setOrigin(FloatMath.sin(elapsed * 2f) * 50, FloatMath.cos(elapsed * 2f) * 50); float cycle = elapsed / (FloatMath.PI * 2); if (FloatMath.ifloor(cycle) % 2 == 0) { // go in a circle without going out of bounds g5Inner.setTranslation(-25 + 50 * FloatMath.cos(elapsed), -25 + 50 * FloatMath.sin(elapsed)); } else { // go out of bounds on right and left g5Inner.setTranslation(25 + 250 * FloatMath.cos(elapsed + FloatMath.PI/2), -25); } } }