Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local pos = there
- local emitter = ParticleEmitter(vector_origin)
- local particles = {}
- local function collide(self, pos, normal)
- WorldSound("npc/headcrab_poison/ph_step"..math.random(2,4)..".wav", pos, 60, math.random(25, 70))
- end
- local function Think()
- local clr2 = HSVToColor(CurTime()*30%360, 0.5, 1)
- local clr = HSVToColor(CurTime()*30%360, 0.5, 1)
- clr.a = 255
- for i =1, 2 do
- local particle = emitter:Add("sprites/light_glow02_add", pos)
- -- movement
- particle:SetVelocity(Vector(math.Rand(-1, 1), math.Rand(-1, 1), math.Rand(2.5, 5)) * 100)
- particle:SetAirResistance(0)
- particle:SetGravity(physenv.GetGravity()*0.5)
- particle:SetCollide(true)
- particle:SetBounce(0.25)
- -- appearance
- particle:SetColor(clr2.r, clr2.g, clr2.b)
- particle.clr = clr
- particle:SetStartAlpha(255)
- particle:SetEndAlpha(0)
- particle:SetStartSize(10)
- particle:SetEndSize(0)
- particle:SetDieTime(math.Rand(1.5, 2.5))
- particle:SetStartLength(0)
- particle:SetEndLength(0)
- particle:SetCollideCallback(collide)
- table.insert(particles, particle)
- end
- end
- local mat = Material("particle/Particle_Glow_04_Additive")
- hook.Add("PostDrawTranslucentRenderables", 1, function()
- for key, particle in pairs(particles) do
- local delta = particle:GetDieTime() - particle:GetLifeTime()
- if delta > 0 then
- render.SetMaterial(mat)
- render.DrawBeam(particle:GetPos() + particle:GetVelocity()*0.05, particle:GetPos() - particle:GetVelocity() * 0.25, 1 * delta, 0, 1, particle.clr)
- else
- particles[key] = nil
- end
- end
- end)
- hook.Add("Think", "particle_test", Think)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement