Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How can one player walk through other players?

I knwo some games have this but turning off can collide they would just fall, how would I do it where they can only walk through other players.

3 answers

✓ Accepted answer

NOTE: This may only work using uncollided parts

-- Made with <3 by markisntcrazy
local body = {"Left Arm", "Right Arm", "Torso", "Right Leg", "Left Leg", "Head"}
for i = 1, #arms do
Workspace.Player[body[i]].CanCollide = false
end

sorry for my fellow helpers utter incompetence. I for one realize there is no other place besides the wiki and youtube you can go to, and even then you would much rather hear it from another scripter. Not to mention there is no such thing as a website that does requests for scripting. SO that being said, lets discuss this. so I see your problem, I don't know a proper solution, but you can start by making a script that adds a BodyPosition to the character with very large maximum force values when a player collides with another player, this will make your player levitate, then turn the can collide values off for each of the characters body parts, In theory, the players will move through each other without colliding. Then be sure to remove the BodyPosition and set all body parts back to can collide = true. In theory this will work. the only concern I have is the characters may just stay in one spot and levitate instead, but its still worth a shot. Good Luck! The admins will probably remove your question before I have time to reply to any questions, so just message me on roblox if you have any problems.

Hello, this script should work. (No, it isn't mine. I found it while scouring the internet.) Just put it in a script in ServerScriptService

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)

1 comment

0

This Post Is 3 Years Old. Also, Use CodeBlock While Typing Scripts

This discussion is preserved as it was. New answers, comments, and votes are closed.