Hello !
Recently, roblox patched corner clips, and, i would like to know if it is possible to make a script that gives the possibility to the player to corner clip again.
So, since yesterday, roblox patched the glitch called “corner clip”, and, i would like to be able to do this glitch again into my game, but i don’t even know how.
So, i would like to know if anyone knows how to be able to do this glitch again using a script or anything like that.
Thanks for reading!
you can still corner clip with thin walls or long emote(emote where you move away from your position[
Example:
Line dance
when you move as far as you can with the emote, you have to shift lock to corner clip.
])
I’ve tried to recreate corner clipping, but I’ve only managed to get as far as “if some part of the player clips into a brick on the other side of a wall, teleport them through the wall”.
Roblox should at least add the possibility to have acess to the physic before corner clips patch by writting a script. So, only developpers who need corner clips in their games will can make corner clips.
local RS = game:GetService("RunService")
local char = game:GetService("Players").LocalPlayer.Character
local rootPart = char:WaitForChild("Torso")
function clip()
local SelectedClipPart
local rayParams = RaycastParams.new()
rayParams.FilterDescendantsInstances = char:GetDescendants()
rayParams.FilterType = Enum.RaycastFilterType.Blacklist
local result = workspace:Raycast(rootPart.Position, rootPart.CFrame.LookVector * -2, rayParams)
if result then
SelectedClipPart = result.Instance
end
if SelectedClipPart then
-- get what corner of the part the player is touching.
local CornerPartsFolder = Instance.new("Folder", workspace)
CornerPartsFolder.Name = "TEMP_CC_CornerParts"
local function createCorner(pos)
local CornerPart = Instance.new("Part", CornerPartsFolder)
CornerPart.Anchored = true
CornerPart.CanCollide = false
CornerPart.Transparency = 1
CornerPart.Color = Color3.new(1,0,0)
CornerPart.CFrame = pos
CornerPart.Size = Vector3.new(.1, SelectedClipPart.Size.Y, .1)
CornerPart.Touched:Connect(function() end)
return CornerPart
end
local Corners = {
createCorner(
SelectedClipPart.CFrame * CFrame.new(
SelectedClipPart.Size.X/-2 - 0.05,
0,
SelectedClipPart.Size.Z/2 + 0.05
)
),
createCorner(
SelectedClipPart.CFrame * CFrame.new(
SelectedClipPart.Size.X/2 + 0.05,
0,
SelectedClipPart.Size.Z/2 + 0.05
)* CFrame.Angles(0, 0, math.rad(180))
),
createCorner(
SelectedClipPart.CFrame * CFrame.new(
SelectedClipPart.Size.X/2 + 0.05,
0,
SelectedClipPart.Size.Z/-2 - 0.05
)* CFrame.Angles(0, math.rad(180), 0)
),
createCorner(
SelectedClipPart.CFrame * CFrame.new(
SelectedClipPart.Size.X/-2 - 0.05,
0,
SelectedClipPart.Size.Z/-2 - 0.05
)* CFrame.Angles(math.rad(180), 0, 0)
)
}
local SelectedCorner
for _, part in pairs(rootPart:GetTouchingParts()) do
for _, corner in pairs(Corners) do
if part == corner then
SelectedCorner = part
break
end
end
end
if SelectedCorner then
-- find which side of the corner the player is closer to
local LV = createCorner(SelectedCorner.CFrame - SelectedCorner.CFrame.LookVector * 0.3)
local RV = createCorner(SelectedCorner.CFrame - SelectedCorner.CFrame.RightVector * 0.3)
local function roundTransformation(partSize)
if partSize > 5 then
--[[ parts that are longer than 5 studs are given the 'glitch wrap behaviour',
meaning players will only be transformed 3/4 through the wall instead of all the way.
]]
return math.max(partSize*0.75, 5)
else
return partSize + 1
end
end
if (LV.Position - rootPart.Position).Magnitude <= (RV.Position - rootPart.Position).Magnitude then
rootPart.CFrame = rootPart.CFrame + SelectedCorner.CFrame.LookVector
* roundTransformation(SelectedClipPart.Size.Z)
else
rootPart.CFrame = rootPart.CFrame + SelectedCorner.CFrame.RightVector
* roundTransformation(SelectedClipPart.Size.X)
end
end
CornerPartsFolder:Destroy()
end
end
local PrevAngle = rootPart.CFrame.LookVector
local Cooldown = false
RS.Stepped:Connect(function()
if rootPart.CFrame.LookVector:Dot(PrevAngle) < -0.5 and Cooldown == false then
Cooldown = true
clip()
wait(1)
Cooldown = false
end
PrevAngle = rootPart.CFrame.LookVector
end)