Buggy code:
else if ( i == 1 ) o . setBounds ( preset3 [ i ] . x , ( ( preset3 [ i ] . y ) - height ) , ( ( preset3 [ i ] . width ) + width ) , preset3 [ i ] . height ) ; else o . setBounds ( ( ( preset3 [ i ] . x ) + width ) , ( ( preset3 [ i ] . y ) - height ) , preset3 [ i ] . width , ( ( preset3 [ i ] . height ) + height ) ) ; o . setSpeed ( obstacleSpeed , 0 ) ; o . setColor ( color ) ; obstacles . add ( o ) ; } } else if ( preset == 3 ) { for ( int i = 0 ; i < ( preset4 . length ) ; i ++ ) { Obstacle o = obstaclePool . obtain ( ) ; o . setBounds ( preset4 [ i ] . x , preset4 [ i ] . y , preset4 [ i ] . width , preset4 [ i ] . height ) ; o . setSpeed ( obstacleSpeed , 0 ) ; o . setColor ( color ) ; obstacles . add ( o ) ; } } else if ( preset == 4 ) { for ( int i = 0 ; i < ( preset5 . length ) ; i ++ ) { Obstacle o = obstaclePool . obtain ( ) ; o . setBounds ( preset5 [ i ] . x , preset5 [ i ] . y , preset5 [ i ] . width , preset5 [ i ] . height ) ; o . setSpeed ( obstacleSpeed , 0 ) ; o . setColor ( color ) ; obstacles . add ( o ) ; } } else if ( preset == 5 ) { int height = ran . nextInt ( 75 ) ; for ( int i = 0 ; i < ( preset6 . length ) ; i ++ ) { Obstacle o = obstaclePool . obtain ( ) ; if ( i == 0 ) o . setBounds ( preset6 [ i ] . x , preset6 [ i ] . y , preset6 [ i ] . width , ( ( preset6 [ i ] . height ) + height ) ) ; else if ( i == 1 ) o . setBounds ( preset6 [ i ] . x , ( ( preset6 [ i ] . y ) + height ) , preset6 [ i ] . width , ( ( preset6 [ i ] . height ) - height ) ) ; else if ( i == 2 ) o . setBounds ( preset6 [ i ] . x , ( ( preset6 [ i ] . y ) + height ) , preset6 [ i ] . width , preset6 [ i ] . height ) ; else if ( i == 3 ) o . setBounds ( preset6 [ i ] . x , ( ( preset6 [ i ] . y ) + height ) , preset6 [ i ] . width , preset6 [ i ] . height ) ; o . setSpeed ( obstacleSpeed , 0 ) ; o . setColor ( color ) ; obstacles . add ( o ) ; } } else if ( preset == 6 ) { int height = ran . nextInt ( 125 ) ; for ( int i = 0 ; i < ( preset7 . length ) ; i ++ ) { Obstacle o = obstaclePool . obtain ( ) ; if ( i == 2 ) o . setBounds ( preset7 [ i ] . x , preset7 [ i ] . y , preset7 [ i ] . width , ( ( preset7 [ i ] . height ) + height ) ) ; else if ( i == 3 ) o . setBounds ( preset7 [ i ] . x , ( ( preset7 [ i ] . y ) + height ) , preset7 [ i ] . width , preset7 [ i ] . height ) ; else o . setBounds ( preset7 [ i ] . x , preset7 [ i ] . y , preset7 [ i ] . width , preset7 [ i ] . height ) ; o . setSpeed ( obstacleSpeed , 0 ) ; o . setColor ( color ) ; obstacles . add ( o ) ; } } else if ( preset == 7 ) { for ( int i = 0 ; i < ( preset8 . length ) ; i ++ ) { Obstacle o = obstaclePool . obtain ( ) ; o . setBounds ( preset8 [ i ] . x , preset8 [ i ] . y , preset8 [ i ] . width , preset8 [ i ] . height ) ; o . setSpeed ( obstacleSpeed , 0 ) ; o . setColor ( color ) ; obstacles . add ( o ) ; } } } <START_BUG> obstacleSpeed -= delta // 4 ; <END_BUG> if ( ( spawnInterval ) > 1500 ) spawnInterval -= delta // 4 ; for ( Obstacle obs : obstacles ) { obs . update ( delta ) ; } for ( Obstacle obs : obstacles ) { if ( ( ( obs . getRect ( ) . x ) + ( obs . getRect ( ) . width ) ) < ( - 500 ) ) { obstaclePool . free ( obs ) ; obstacles . removeValue ( obs , true ) ; } } } public void draw ( ShapeRenderer ren ) { } public Array < Obstacle > getObstacles ( ) { } }

Fix:
obstacleSpeed -= delta // 3 ;