@rbxts/lightning-beams v1.1.0-ts.2
Optimised, lightweight, and highly customisable Lightning Effects for use in Roblox. Can be made into all sorts of special effects.
Features:
- Layered, moving Perlin noise
- Uniform disk-point picking for even distribution of control points
- Can go along a Bezier curve rather than just straight-lines (i.e. Similar to how rblx beams curve)
- Varying thickness, length, and, transparency
- Can use ColorSequences
- Lightning "Sparks" and "Explosion" sub-modules
- Can smoothly travel as a projectile trying to reach a point
Table of contents
Showcase
Usage
This section shows the entire API for the main module (LightningBolt) and sub-modules (LightningSparks, LightningExplosion). Default values for properties are in the code.
Example
local LightningBolt = require((...).LightningBolt)
--Create a new bolt with 40 parts
local NewBolt = LightningBolt.new(workspace.Attach0, workspace.Attach1, 40)
--Then, update properties to your liking
NewBolt.CurveSize0, NewBolt.CurveSize1 = 10, 15
NewBolt.PulseSpeed = 2
NewBolt.PulseLength = 0.5
NewBolt.FadeLength = 0.25
NewBolt.MaxRadius = 1
NewBolt.Color = Color3.new(math.random(), math.random(), math.random())
local NewSparks = LightningSparks.new(NewBolt)
LightningBolt
LightningBolt.new(Attachment0, Attachment1, PartCount)
\
Creates a bolt at source Attachment0 which flows into sink Attachment1 with number of parts PartCount
LightningBolt:Destroy()
\
Cleans up and clears from memory
Appearance Properties
Enabled
\
Hides bolt without destroying any parts when false\
Attachment0, Attachment1
\
Bolt originates from Attachment0 and ends at Attachment1\
CurveSize0, CurveSize1
\
Works similarly to beams. See https://dk135eecbplh9.cloudfront.net/assets/blt160ad3fdeadd4ff2/BeamCurve1.png \
MinRadius, MaxRadius
\
Governs the amplitude of fluctuations throughout the bolt\
Frequency
\
Governs the frequency of fluctuations throughout the bolt. Lower this to remove jittery-looking lightning\
AnimationSpeed
\
Governs how fast the bolt oscillates (i.e. how fast the fluctuating wave travels along bolt)\
Thickness
\
The thickness of the bolt\
MinThicknessMultiplier, MaxThicknessMultiplier
\
Multiplies Thickness value by a fluctuating random value between MinThicknessMultiplier and MaxThicknessMultiplier along the Bolt
Kinetic Properties
- Allows for fading in (or out) of the bolt with time. Can also create a "projectile" bolt
- Recommend setting AnimationSpeed to 0 if used as projectile (for better aesthetics)
- Works by passing a "wave" function which travels from left to right where the wave height represents opacity (opacity being 1 - Transparency)
- See https://www.desmos.com/calculator/hg5h4fpfim to help customise the shape of the wave with the below properties:
MinTransparency, MaxTransparency
\
See https://www.desmos.com/calculator/hg5h4fpfim \
PulseSpeed
\
Bolt arrives at Attachment1 1/PulseSpeed seconds later. See https://www.desmos.com/calculator/hg5h4fpfim \
PulseLength
\
See https://www.desmos.com/calculator/hg5h4fpfim \
FadeLength
\
See https://www.desmos.com/calculator/hg5h4fpfim \
ContractFrom
\
Parts shorten or grow once their Transparency exceeds this value. Set to a value above 1 to turn effect off. See https://imgur.com/OChA441
Color Properties
Color
\
Can be a Color3 or ColorSequence\
ColorOffsetSpeed
\
Sets speed at which ColorSequence travels along Bolt
LightningSparks
LightningSparks.new(LightningBolt, MaxSparkCount)
\
Creates Lightning Sparks which fly out from LightningBolt up to a maximum of MaxSparkCount
LightningSparks:Destroy()
\
Clears from memory
Properties
Enabled
\
Stops spawning sparks when false\
LightningBolt
\
Bolt which sparks fly out of\
MaxSparkCount
\
Max number of sparks visible at any given instance\
MinSpeed, MaxSpeed
\
Min and max PulseSpeeds of sparks\
MinDistance, MaxDistance
\
Governs how far sparks travel away from main bolt\
MinPartsPerSpark, MaxPartsPerSpark
\
Adjustable
LightningExplosion
LightningExplosion.new(Position, Size, NumBolts, Color, BoltColor, UpVector)
\
Size: Value between 0 and 1 (1 for largest)\
NumBolts: Number of lightning bolts shot out from explosion\
Color: Can be a Color3 or ColorSequence\
BoltColor: Can be a Color3 or ColorSequence\
UpVector: Can be used to "rotate" the explosion
LightningExplosion:Destroy()
\
Cleans up and clears from memory