Advertisement
LuaWeaver

FancyPolygonThing

May 19th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.29 KB | None | 0 0
  1. oc=oc or function(f) return f end
  2.  
  3. function regularNGon(n,scale,off)
  4.     local points={}
  5.     for i=0,n-1 do
  6.         points[i+1]=Vector3.new(math.cos(2*math.pi*i/n+off),0,math.sin(2*math.pi*i/n+off))*scale
  7.     end
  8.     return points
  9. end
  10.  
  11. function createRegularNGon(n,scale,centerP,off)
  12.     local points=regularNGon(n,scale,off)
  13.     local model=Instance.new("Model")
  14.     for i,p1 in pairs(points) do
  15.         local p2=points[i%n+1]
  16.         local center=(p2+p1)/2
  17.         local len=(p2-p1).magnitude
  18.  
  19.         local part=Instance.new("Part",model)
  20.         part.FormFactor="Custom"
  21.         part.Size=Vector3.new(0.2,0.2,len)
  22.         part.Anchored=true
  23.         part.CFrame=CFrame.new(center,p2)+centerP
  24.         part.CanCollide=false
  25.     end
  26.     return model
  27. end
  28.  
  29. local plr=game.Players.LocalPlayer
  30. local char=plr.Character
  31.  
  32. local welds,dirs={},{}
  33. local function gWeld(p0,p1)
  34.     local w=Instance.new("Weld",p0)
  35.     w.Part0=p0
  36.     w.Part1=p1
  37.     w.C0=p0.CFrame:inverse()
  38.     w.C1=p1.CFrame:inverse()
  39.     return w
  40. end
  41.  
  42. plr.Chatted:connect(oc(function(m)
  43.     if not tonumber(m) then return end
  44.     local sides=tonumber(m)
  45.     local len=25
  46.     local center=char.Torso.CFrame.p
  47.  
  48.     for i=1,15 do
  49.         local newLen=len*((math.sqrt(2-2*math.cos((sides-2)*math.pi/sides)))/2)
  50.         local ang=math.pi*i/sides
  51.         local mod=createRegularNGon(sides,newLen,center,ang)
  52.         mod.Parent=char
  53.         len=newLen
  54.     end
  55. end))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement