Forest Logo
search
package_2

evlightning

By @encryptedethan

Roblox

Mirrored

EvLightning

EvLightning is a Roblox Lua library that aims to generate realistic-looking lightning bolts. This could be used to easily add lightning strike effects to your game.

[image: Lightning demo]

Usage

local LightningBolt = require(path.to.EvLightning)

local myBolt = LightningBolt.new(Vector3.new(0, 400, 0), Vector3.new(0, 0, 0), {
  color = BrickColor.new("Really red");
  -- More options are available, see below...
})
myBolt:Draw(workspace)

A lightning bolt is split into lines, and where the lines meet is considered to be a "bend". At each bend, there is a chance to create a fork, which will create another bolt with its own bends, which in turn have chances to create their own forks, etc. You can control how many bends are in the bolt and the chance of creating a fork at each bend.

API

LightningBolt LightningBolt.new(Vector3 from, Vector3 to[, dictionary options])

Returns an instance of LightningBolt. Automatically generates in the constructor, but further methods must be called on the returned instance to render the bolt.

Options

There are a number of options that you can pass in a third argument to LightningBolt.new in the form of a table dictionary. All options are optional, and have default values.

Option nameDescriptionDefault valueType
seedA numerical seed which could be used to generate the same lightning bolt across a network.RandomNumber
bendsThe number of bends the main bolt should have.6Integer
fork_bendsThe number of bends to put into forks off of the main bolt.2Integer
fork_chanceThe chance to create a new fork off of each bend. (0-100)50Number
transparencyThe transparency of the main bolt. Transparency is reduced at every fork.0.4Number
thicknessThe thickness of the main bolt. Thickness is reduced at every fork.1Number
max_depthThe maximum depth that forks can reach off the main bolt, which is depth 0.3Integer
colorThe color of the boltWhiteBrickColor or Color3
materialThe material of the boltEnum.Material.NeonEnum.Material
decayThe number of seconds for the bolt to exist after being drawn.InfiniteNumber

Note that the fork_chance option is not an equal chance for every bend in the bolt. The chance is distributed in a gradient down the length of the bolt, meaning that if the fork_chance is 50, then at the very top it will be 0, at the middle it will be 25, and at the very bottom it will be 50. This is done so that less forks are generated towards the top, which makes the bolt look more realistic. If you need to create upwards-forking lightning, then simply reverse the to and from arguments.

void bolt:Draw([Instance parent = Workspace])

Draws the lightning bolt in the world with the given options. An optional argument, parent, can be passed, which will be the parent of the generated lightning bolt parts. If this argument is omitted, there will be a new model created in Workspace containing the bolt parts.

array bolt:GetLines()

Returns a table of tables, containing the line information. The member tables have the keys origin, goal, and depth. This is only necessary if you want to draw the lightning bolt manually (i.e. not calling Draw).

{
	{
		origin 	= Vector3 origin,
		goal 	= Vector3 endpoint,
		depth	= Number depth
	},
	{
		origin 	= Vector3 origin,
		goal 	= Vector3 endpoint,
		depth	= Number depth
	},
	-- ...
}

void bolt:Destroy()

If the lightning bolt has been drawn, this method will destroy the model that was created.

dictionary bolt:GetOptions()

Returns a table of the options that were passed into the constructor. Default values are not applied here.

bool bolt:IsDestroyed()

Returns true if the lightning bolt has either been destroyed or has decayed.

bool bolt:IsDrawn()

Returns true of the Draw method has been called on this particular instance.

Package Details

Install command (Click to copy)


Version

0.1.0

License

MIT

check_circle

Safe for commercial use

infoLicense identified from the packaged LICENSE file; the manifest declared none.

Automated license review — not legal advice.