From b5710b0a3845528cdf2cedb046bbaa88ae25de50 Mon Sep 17 00:00:00 2001 From: ne_mene Date: Fri, 20 Mar 2026 14:50:49 +0100 Subject: particle spread --- src/objs/player.lua | 3 ++- src/objs/specks.lua | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src/objs') diff --git a/src/objs/player.lua b/src/objs/player.lua index 4a12334..caf2afd 100644 --- a/src/objs/player.lua +++ b/src/objs/player.lua @@ -102,7 +102,8 @@ function new_player(x, y) ent.speck_sys.lifetime_min = 0.3 ent.speck_sys.initial_velx = 100 - ent.speck_sys.initial_vely = -75 + ent.speck_sys.initial_vely = 0 + ent.speck_sys.spread = 360 ent.speck_sys.forcey = 1000 ent.speck_sys.bounce = true diff --git a/src/objs/specks.lua b/src/objs/specks.lua index 229eb23..485a58a 100644 --- a/src/objs/specks.lua +++ b/src/objs/specks.lua @@ -32,6 +32,7 @@ function Speck_Sys.new() self.initial_velx = 0 self.initial_vely = 0 + self.spread = 0 self.lifetime_min = 1 self.lifetime_max = 5 @@ -81,6 +82,17 @@ function Speck_Sys:update(dt) data.pos[id] = { x = self.x, y = self.y } data.vel[id] = { x = self.initial_velx, y = self.initial_vely } + local beta = self.spread * math.pi / 180 + beta = beta / 2 + beta = randf_range(-beta, beta) + + local rvx = (data.vel[id].x * math.cos(beta)) + - (data.vel[id].y * math.sin(beta)) + local rvy = (data.vel[id].x * math.sin(beta)) + + (data.vel[id].y * math.cos(beta)) + data.vel[id].x = rvx + data.vel[id].y = rvy + data.lifetime[id] = randf_range( self.lifetime_min, self.lifetime_max) data.lifetime_max[id] = data.lifetime[id] -- cgit v1.3-2-g0d8e