From e2f02985d33ef353eabde6a9d47c17d7375a9794 Mon Sep 17 00:00:00 2001 From: Donald Ball Date: Thu, 20 Nov 2025 22:53:33 -0500 Subject: [PATCH] constant rocket plume --- asteroids/actors.lua | 27 ++++++++++++++++++++++++++- asteroids/main.lua | 2 ++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/asteroids/actors.lua b/asteroids/actors.lua index df15fd4..20e118b 100644 --- a/asteroids/actors.lua +++ b/asteroids/actors.lua @@ -94,6 +94,22 @@ function actors.buildActors(game) instance.engineSound = love.audio.newSource(instance.engineSound) instance.engineSound:setVolume(0) instance.engineSound:setLooping(true) + instance.rocketPlume = love.graphics.newParticleSystem(instance.rocketPlume) + instance.rocketPlume:setColors(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) + instance.rocketPlume:setSizes(1.0, 0.9, 0.1) + instance.rocketPlume:setEmissionRate(1000) + -- TODO probably governed most by thrust + instance.rocketPlume:setParticleLifetime(0.1, 0.25) + instance.rocketPlume:setEmissionArea('normal', 10, 10) + instance.rocketPlume:setSpeed(150, 300) + instance.rocketPlume:setRadialAcceleration(40, 80) + instance.rocketPlume:setLinearDamping(0, 0) + instance.rocketPlume:setDirection(phys.tau * 3 / 4) + instance.rocketPlume:setSpread(0) + instance.rocketPlume:setSizeVariation(0) + instance.rocketPlume:setSpin(0.5, 1) + instance.rocketPlume:setTangentialAcceleration(0, 0) + setmetatable(instance, ships_mt) return instance end @@ -115,7 +131,16 @@ function actors.buildActors(game) width / 2, height / 2 ) - -- TODO rocket exhaust + --self.rocketPlume:setDirection(phys.tau * 3 / 4) + love.graphics.draw(self.rocketPlume, + 0, + 0, + (self.facing + phys.tau * 3 / 4) % phys.tau, + scale, + scale, + 0, + height * 0.75 + ) love.graphics.pop() end diff --git a/asteroids/main.lua b/asteroids/main.lua index f2cfbf8..830779b 100644 --- a/asteroids/main.lua +++ b/asteroids/main.lua @@ -19,6 +19,7 @@ local function initGame() sprite = love.graphics.newImage('resources/playerShip1_blue.png'), maxThrust = 200, engineSound = love.sound.newSoundData('resources/enginehum3.ogg'), + rocketPlume = love.graphics.newImage('resources/sparkle_cloud.png'), }, asteroids = { stages = { @@ -100,6 +101,7 @@ local function update(actor, dt) end function love.update(dt) + state.ship.rocketPlume:update(dt) if state.controls.joystick ~= nil then state.ship.throttle = state.controls.joystick:getGamepadAxis('triggerright') if state.ship.throttle > 0 then