Hey! I’m K0rrupt!
I know the question that I’m about to ask may seem a little weird but:
How do we enable collisions for players so that you can just go through the player?
Hey! I’m K0rrupt!
I know the question that I’m about to ask may seem a little weird but:
How do we enable collisions for players so that you can just go through the player?
You can activate collisions by putting this script in ServerScriptService.
https://www.roblox.com/library/2176459411/Disable-Player-Collisions-Script
You would need to use Collision Groups and Physics Service
Variables:
local PhysicsService = game:GetService("PhysicsService")
local PlayerService = game:GetService("Players")
Either create a collision group prior to using this script or do this:
PhysicsService:CreateCollisionGroup("PlayerCharacters")
Set the Player collision group to be not collide-able with other players (this can be done manually as well):
CollisionGroupSetCollidable("PlayerCharacters", "PlayerCharacters", false)
If you would do the set-up manually then it should look something like this:

Then on player and character added do the following:
local function characterAdded(character)
end
local function playerAdded(player)
player.CharacterAdded:Connect(characterAdded)
end
PlayerService.PlayerAdded:Connect(playerAdded)
Now run through the bodyparts of the character like so:
for _, bodyPart in pairs(character:GetChildren()) do
if bodyPart:IsA("BasePart") then
PhysicsService:SetPartCollisionGroup(bodyPart, "PlayerCharacters")
end
end
Though sometimes the script might have some delay so we want to go through the already joined players:
for _, player in pairs(PlayerService:GetPlayers()) do
playerAdded(player)
end
Same for the characters of the players
if player.Character then
characterAdded(player.Character)
end
The full script would look something like this:
-- Variables
local PhysicsService = game:GetService("PhysicsService")
local PlayerService = game:GetService("Players")
-- Collision group set-up
PhysicsService:CreateCollisionGroup("PlayerCharacters")
CollisionGroupSetCollidable("PlayerCharacters", "PlayerCharacters", false)
-- Functions & connections
local function characterAdded(character)
for _, bodyPart in pairs(character:GetChildren()) do
if bodyPart:IsA("BasePart") then
PhysicsService:SetPartCollisionGroup(bodyPart, "PlayerCharacters")
end
end
end
local function playerAdded(player)
player.CharacterAdded:Connect(characterAdded)
if player.Character then
characterAdded(player.Character)
end
end
for _, player in pairs(PlayerService:GetPlayers()) do
playerAdded(player)
end
PlayerService.PlayerAdded:Connect(playerAdded)
Roblox actually has a Developer article on disabling Player to Player Collisions! The method is quite similar to what @KJry_s has posted above. You can still read through the article, it has some great information, explanations, as well as additional methods!
Here is a link to the article: https://developer.roblox.com/en-us/articles/Player-Player-Collisions
Here is the script sourced from the Developer API Article Above:
local PhysicsService = game:GetService("PhysicsService")
local Players = game:GetService("Players")
local playerCollisionGroupName = "Players"
PhysicsService:CreateCollisionGroup(playerCollisionGroupName)
PhysicsService:CollisionGroupSetCollidable(playerCollisionGroupName, playerCollisionGroupName, false)
local previousCollisionGroups = {}
local function setCollisionGroup(object)
if object:IsA("BasePart") then
previousCollisionGroups[object] = object.CollisionGroupId
PhysicsService:SetPartCollisionGroup(object, playerCollisionGroupName)
end
end
local function setCollisionGroupRecursive(object)
setCollisionGroup(object)
for _, child in ipairs(object:GetChildren()) do
setCollisionGroupRecursive(child)
end
end
local function resetCollisionGroup(object)
local previousCollisionGroupId = previousCollisionGroups[object]
if not previousCollisionGroupId then return end
local previousCollisionGroupName = PhysicsService:GetCollisionGroupName(previousCollisionGroupId)
if not previousCollisionGroupName then return end
PhysicsService:SetPartCollisionGroup(object, previousCollisionGroupName)
previousCollisionGroups[object] = nil
end
local function onCharacterAdded(character)
setCollisionGroupRecursive(character)
character.DescendantAdded:Connect(setCollisionGroup)
character.DescendantRemoving:Connect(resetCollisionGroup)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
a little late to this topic but incase anyone else comes along i’d like to point out that roblox has released a post about changes to collision groups, which will break this script eventually. by replacing some things you could probably fix it easily, but i’m too lazy to come up with a remade script myself right now.
the post can be found here
I needed this today so here’s an update, in as minimal form as I could find (inspired by Disable Player Collisions | 2 Minute Scripting
- YouTube).
local PhysicsService = game:GetService("PhysicsService")
PhysicsService:RegisterCollisionGroup("Participants")
PhysicsService:CollisionGroupSetCollidable("Participants", "Participants", false)
local function disableCollisions(character)
for _, bodyPart in pairs(character:GetChildren()) do
if bodyPart:IsA("BasePart") then
bodyPart.CollisionGroup = "Participants"
end
end
end
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(disableCollisions)
end)
You don’t need to do this at start up, if for some reason your bloxers need to get cozy temporarily. Just assign the CollisionGroup back to “Default” to restore:
local function enableCollisions(character: Model)
for _, bodyPart: BasePart in pairs(character:GetChildren()) do
if bodyPart:IsA("BasePart") then
bodyPart.CollisionGroup = "Default"
end
end
end
Please be sure to run it in a Server script, it won’t work in a local script, as the docs explain:
Creating, deleting, and modifying collision relationships between collision groups is limited to server-side Scripts.
Stop spreading false information and try to act helpful when you’re not. If you don’t understand a topic, get outta here.
why is this still here!
This text will be hidden
dont troll bro this just makes ur speed 100 and knocks you over