From b5afa132e7fafa23990d5076dc711b2e285f3988 Mon Sep 17 00:00:00 2001 From: dvorakmortonxd Date: Mon, 19 Oct 2026 23:19:25 +0200 Subject: [PATCH] Refined the exhaust animation --- src/main/java/dev/dvorakmortonxd/Game.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/dvorakmortonxd/Game.java b/src/main/java/dev/dvorakmortonxd/Game.java index 8c587a1..9ab0908 100644 --- a/src/main/java/dev/dvorakmortonxd/Game.java +++ b/src/main/java/dev/dvorakmortonxd/Game.java @@ -63,6 +63,8 @@ public class Game extends JPanel implements ActionListener, KeyListener { private int rocketYPre = windowHeight/2-125; private int rocketY = windowHeight/2-125; private int rocketExhaustY = rocketY; + private float opacityAnimation = 0.05f; + public Game() { // sets the window size setPreferredSize(new Dimension(windowWidth,windowHeight)); @@ -112,17 +114,19 @@ public class Game extends JPanel implements ActionListener, KeyListener { hoveringOverQuitButton = quitButtonCollision.contains(mouseX, mouseY); if (hoverDirection == "up") { hoverYOffset++; + opacityAnimation += 0.01; if (hoverYOffset > 90) { hoverDirection = "down"; } } else { hoverYOffset--; + opacityAnimation -= 0.01; if (hoverYOffset <= 0) { hoverDirection = "up"; } } if (level == 1) { planetY = planetYPre + hoverYOffset / 6; } - if (level == 2) { rocketY = rocketYPre + hoverYOffset / 6; rocketExhaustY = rocketYPre + 150 + hoverYOffset/3;} + if (level == 2) { rocketY = rocketYPre + hoverYOffset / 3; rocketExhaustY = rocketYPre + 150 + hoverYOffset / 2;} repaint(); // triggers render } @@ -184,7 +188,10 @@ public class Game extends JPanel implements ActionListener, KeyListener { for (int i = 0; i < MENU_STAR_COUNT; i++) { // drawing the stars g.fillOval(starX[i]-starSize, starY[i]-starSize, starSize, starSize); } - g.drawImage(rocketExhaust, windowWidth/2-25, rocketExhaustY, 50, 100, this); + Graphics2D g2 = (Graphics2D) g; + g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacityAnimation)); + g2.drawImage(rocketExhaust, windowWidth/2-25, rocketExhaustY, 50, 100, this); + g2.setComposite(AlphaComposite.SrcOver); // reset so nothing else is transparent g.drawImage(rocket, windowWidth/2-73, rocketY, 147, 234, this);