Advertisement
HowToRoblox

BreakingHandler

Mar 6th, 2021
4,125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.10 KB | None | 0 0
  1. local glass = script.Parent
  2.  
  3. local isBroken = false
  4.  
  5.  
  6. glass.Touched:Connect(function(hit)
  7.    
  8.  
  9.     if game.Players:GetPlayerFromCharacter(hit.Parent) and not isBroken then
  10.        
  11.         isBroken = true
  12.        
  13.        
  14.         local minX, maxX = glass.Position.X - glass.Size.X/2, glass.Position.X + glass.Size.X/2
  15.         local minY, maxY = glass.Position.Y - glass.Size.Y/2, glass.Position.Y + glass.Size.Y/2
  16.  
  17.         local pointOfBreak = Vector3.new(math.random(minX, maxX), math.random(minY, maxY), glass.Position.Z)
  18.        
  19.         local bottomLeft = Vector3.new(glass.Position.X - glass.Size.X/2, glass.Position.Y - glass.Size.Y/2, glass.Position.Z)
  20.         local topLeft = Vector3.new(glass.Position.X - glass.Size.X/2, glass.Position.Y + glass.Size.Y/2, glass.Position.Z)
  21.         local bottomRight = Vector3.new(glass.Position.X + glass.Size.X/2, glass.Position.Y - glass.Size.Y/2, glass.Position.Z)
  22.         local topRight = Vector3.new(glass.Position.X + glass.Size.X/2, glass.Position.Y + glass.Size.Y/2, glass.Position.Z)
  23.        
  24.        
  25.         local part1 = Instance.new("Part")
  26.         part1.Size = Vector3.new(pointOfBreak.X - bottomLeft.X, pointOfBreak.Y - bottomLeft.Y, glass.Size.Z)
  27.         part1.Position = Vector3.new(bottomLeft.X + part1.Size.X/2, bottomLeft.Y + part1.Size.Y/2, glass.Position.Z)
  28.        
  29.         local part2 = Instance.new("Part")
  30.         part2.Size = Vector3.new(pointOfBreak.X - topLeft.X, topLeft.Y - pointOfBreak.Y, glass.Size.Z)
  31.         part2.Position = Vector3.new(topLeft.X + part2.Size.X/2, topLeft.Y - part2.Size.Y/2, glass.Position.Z)
  32.        
  33.         local part3 = Instance.new("Part")
  34.         part3.Size = Vector3.new(bottomRight.X - pointOfBreak.X, pointOfBreak.Y - bottomRight.Y, glass.Size.Z)
  35.         part3.Position = Vector3.new(bottomRight.X - part3.Size.X/2, bottomRight.Y + part3.Size.Y/2, glass.Position.Z)
  36.        
  37.         local part4 = Instance.new("Part")
  38.         part4.Size = Vector3.new(topRight.X - pointOfBreak.X, topRight.Y - pointOfBreak.Y, glass.Size.Z)
  39.         part4.Position = Vector3.new(topRight.X - part4.Size.X/2, topRight.Y - part4.Size.Y/2, glass.Position.Z)
  40.        
  41.        
  42.         local wedges = {}
  43.        
  44.        
  45.         local wedge1 = Instance.new("WedgePart")
  46.         wedge1.Orientation = Vector3.new(0, -90, 180)
  47.         wedge1.Size = Vector3.new(part1.Size.Z, part1.Size.Y, part1.Size.X)
  48.         wedge1.Position = part1.Position
  49.         table.insert(wedges, wedge1)
  50.        
  51.         local wedge2 = Instance.new("WedgePart")
  52.         wedge2.Orientation = Vector3.new(0, 90, 0)
  53.         wedge2.Size = Vector3.new(part1.Size.Z, part1.Size.Y, part1.Size.X)
  54.         wedge2.Position = part1.Position
  55.         table.insert(wedges, wedge2)
  56.        
  57.        
  58.         local wedge3 = Instance.new("WedgePart")
  59.         wedge3.Orientation = Vector3.new(0, -90, 0)
  60.         wedge3.Size = Vector3.new(part2.Size.Z, part2.Size.Y, part2.Size.X)
  61.         wedge3.Position = part2.Position
  62.         table.insert(wedges, wedge3)
  63.  
  64.         local wedge4 = Instance.new("WedgePart")
  65.         wedge4.Orientation = Vector3.new(0, 90, 180)
  66.         wedge4.Size = Vector3.new(part2.Size.Z, part2.Size.Y, part2.Size.X)
  67.         wedge4.Position = part2.Position
  68.         table.insert(wedges, wedge4)
  69.        
  70.        
  71.         local wedge5 = Instance.new("WedgePart")
  72.         wedge5.Orientation = Vector3.new(0, -90, 0)
  73.         wedge5.Size = Vector3.new(part3.Size.Z, part3.Size.Y, part3.Size.X)
  74.         wedge5.Position = part3.Position
  75.         table.insert(wedges, wedge5)
  76.  
  77.         local wedge6 = Instance.new("WedgePart")
  78.         wedge6.Orientation = Vector3.new(0, 90, 180)
  79.         wedge6.Size = Vector3.new(part3.Size.Z, part3.Size.Y, part3.Size.X)
  80.         wedge6.Position = part3.Position
  81.         table.insert(wedges, wedge6)
  82.  
  83.  
  84.         local wedge7 = Instance.new("WedgePart")
  85.         wedge7.Orientation = Vector3.new(0, -90, 180)
  86.         wedge7.Size = Vector3.new(part4.Size.Z, part4.Size.Y, part4.Size.X)
  87.         wedge7.Position = part4.Position
  88.         table.insert(wedges, wedge7)
  89.  
  90.         local wedge8 = Instance.new("WedgePart")
  91.         wedge8.Orientation = Vector3.new(0, 90, 0)
  92.         wedge8.Size = Vector3.new(part4.Size.Z, part4.Size.Y, part4.Size.X)
  93.         wedge8.Position = part4.Position
  94.         table.insert(wedges, wedge8)
  95.        
  96.        
  97.         for i, wedge in pairs(wedges) do
  98.            
  99.             wedge.Material = Enum.Material.Glass
  100.             wedge.Transparency = 0.6
  101.             wedge.Color = Color3.fromRGB(159, 243, 233)
  102.            
  103.             wedge.Parent = workspace
  104.         end
  105.        
  106.        
  107.         glass.Transparency = 1
  108.         glass.CanCollide = false
  109.     end
  110. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement