I know near nothing about CollisionGroups, so I found an open-sourced one and started editing it a bit and need some help.
The script currently will make you non-collidable to other players, but I’m looking to change it so it’ll depend on your health e.g. Over 5000 Health = Non-Collidable| 100 Health = Collidable (see lowest lines where I attempt this).
Anyone know how to fix this so the script functions how I’m aiming for?
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(function(a)
a.CharacterAdded:connect(function(char)
char:FindFirstChild("Humanoid").Changed:connect(function(z)
if char.Humanoid.MaxHealth > 5000 then
onCharacterAdded(char)
else
resetCollisionGroup(char)
end
end)
end)
end)