I am looking over a script my friend made that shoots out a lightning bolt to wherever your mouse cursor is. Most of it makes sense, however some of the math I can't quite comprehend. Script --I'm only including the function that matters, I will put comments next to math variables I do or don't understand. Also correct me if some of my comments are inaccurate.
function Lightning(pos,pos2,radius,numParts,model) --Example Arguments: Lightning(plr.Character["LeftHand"].CFrame.p, mousehit.p, 0.15, 6, workspace) radius = radius or 0.2 numParts = numParts or 10 model = model or workspace local lv = CFrame.new(pos,pos2).lookVector --Positions the bolt in your general vicinity local dist = (pos-pos2).magnitude -- Creates a straight line (bolt) between mouse position and you local dbp = dist/numParts --Divides the bolt into segments(numParts) local last = pos --I think this does something later for i = 1,numParts do local p = Instance.new("Part",model) p.FormFactor = "Symmetric" p.Size = Vector3.new(1,1,1) p.CanCollide = false p.Material = "Neon" p.Transparency = 0.5 p.Anchored = true p.BrickColor = BrickColor.new("Bright red") local x = math.random(-100,100)/100*dbp/2 --????? local y = math.random(-100,100)/100*dbp/2 --????? local p2 = CFrame.new(pos+lv*(i*dbp),pos2+lv)*CFrame.new(x,y,0) --????? local dist2 = (p2.p-last).magnitude local mid = (p2.p+last)/2 local m = Instance.new("BlockMesh",p) --Why add a mesh?? m.Scale = Vector3.new(radius,radius,dist2) p.CFrame = CFrame.new(mid,p2.p) last = p2.p game:GetService("Debris"):AddItem(p,math.random(40,100)/1000) end end
The ones with the ????? are the primary cause of confusion, everything else is just minor.