Even after making sure CanCollide is disabled, this placement preview is still collidable. This happens in a localscript (so that only you can see your preview). Even after disabling CanCollide, you can still jump on it, and push zombies with it, and push yourself with it. How to fix?
local createPreview = function() if tower.Value == 1 then if preview then preview:Destroy() end preview = game.ReplicatedStorage.Towers.gun:Clone() placementregion = preview:FindFirstChild("PlacementBox") rangeindicator = preview:FindFirstChild("RangeIndicator") for i,v in pairs(preview:GetDescendants()) do if v:IsA("BasePart") then if v.Name ~= "RangeIndicator" and v.Name ~= "PlacementBox" then v.Transparency = 0.5 end v.BrickColor = placecolor v.CanCollide = false local mesh = v:FindFirstChild("Mesh") if mesh then mesh.TextureId = "" end end end preview.PrimaryPart = placementregion preview.Parent = workspace.Towers end if tower.Value == 2 then if preview then preview:Destroy() end preview = game.ReplicatedStorage.Towers.sniper:Clone() placementregion = preview:FindFirstChild("PlacementBox") rangeindicator = preview:FindFirstChild("RangeIndicator") for i,v in pairs(preview:GetDescendants()) do if v:IsA("BasePart") then if v.Name ~= "RangeIndicator" and v.Name ~= "PlacementBox" then v.Transparency = 0.5 end v.BrickColor = placecolor v.CanCollide = false local mesh = v:FindFirstChild("Mesh") if mesh then mesh.TextureId = "" end end end preview.PrimaryPart = placementregion preview.Parent = workspace.Towers end tower.Changed:Connect(function() if tower.Value == 1 then if preview then preview:Destroy() end preview = game.ReplicatedStorage.Towers.gun:Clone() placementregion = preview:FindFirstChild("PlacementBox") rangeindicator = preview:FindFirstChild("RangeIndicator") for i,v in pairs(preview:GetDescendants()) do if v:IsA("BasePart") then if v.Name ~= "RangeIndicator" and v.Name ~= "PlacementBox" then v.Transparency = 0.5 end v.BrickColor = placecolor v.CanCollide = false local mesh = v:FindFirstChild("Mesh") if mesh then mesh.TextureId = "" end end end preview.PrimaryPart = placementregion preview.Parent = workspace.Towers end if tower.Value == 2 then if preview then preview:Destroy() end preview = game.ReplicatedStorage.Towers.sniper:Clone() placementregion = preview:FindFirstChild("PlacementBox") rangeindicator = preview:FindFirstChild("RangeIndicator") for i,v in pairs(preview:GetDescendants()) do if v:IsA("BasePart") then if v.Name ~= "RangeIndicator" and v.Name ~= "PlacementBox" then v.Transparency = 0.5 end v.BrickColor = placecolor v.CanCollide = false local mesh = v:FindFirstChild("Mesh") if mesh then mesh.TextureId = "" end end end preview.PrimaryPart = placementregion preview.Parent = workspace end end) spawn(function() while preview and placementregion and rangeindicator and placing.Value == true do local ray = Ray.new(workspace.Camera.CFrame.Position,(mouse.Hit.Position-workspace.Camera.CFrame.Position).Unit*500) local ignorelist = {workspace.Enemies,workspace.Towers,player.Character,preview,workspace["Projectiles/Traps"]} local part,position = workspace:FindPartOnRayWithIgnoreList(ray,ignorelist,false,true) preview:SetPrimaryPartCFrame(CFrame.new(position) * CFrame.new(Vector3.new(0,(placementregion.Size.Y/2),0)) * prevrot) local torso = preview:FindFirstChild("Torso") cf = torso.CFrame for i,v in pairs(preview:GetDescendants()) do if v:IsA("BasePart") then v.BrickColor = placecolor v.CanCollide = false end end wait() end end) end