How do I stop players spawning on-top of a part with "CanCollide" off?

Hey, so I wondering if there is a way to allow players to spawn inside a part with “CanCollide” off without them actually landing on top of said part.

I’ve tried everything from moving the Regional Areas up, and the spawn pad down but nothing seems to work.

Video featuring my issue:

Move the red part up or use scripting to set their location when they spawn

also i cant even replicate this problem?

The redpart at the top that the player landed on was an example, the actual game uses terrain as the roof so we can’t move it up.

i tried it and i didnot have that problem maybe try spawning them with a script

Is spawning them with a script possible given I have 14 teams, each with different spawns?

yeah its possiple you can check the player team an if his team is green for examble then spawn him in his team spawn smt like this

if plr.Team == green then
plr.Character.PrimaryPart.CFrame = greenSpawn.CFrame

or you can make a folder with all the spawns it would be smt like this

plr.Character.CFrame = workspace.spawns:FindFirstChild(tostring(Player.Team)).CFrame

but every spawner will need to be the same name as the team like
if a team is called Green then the spawner name should be Green
what i mean by spawner is any block it doesnot have to be a spawnlocation
but test first if the player get spawned in the right location when using the script

if you donot want to add the spawns in a folder then you can use tags and then use CollectionService to get them instead

Do I add this script into a folder or into each spawnpart?

no just 1 script in SSS i have studio open now i will make a quick script and send it

you added all the spawns in a folder right?

Yup, the folder is called “Spawns”

1 Like

ok add this script in SSS and try

local Players = game:GetService("Players")
local SpawnsFolder = workspace.Spawns

Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		local HumanoidRootPart :Part = char:WaitForChild("HumanoidRootPart")
		HumanoidRootPart.Position = SpawnsFolder[plr.Team.Name].Position
	end)
end)

every spawner name should be the exact same name of the team
i tested it and it seems to work

For some reason, this doesn’t seem to be working for me. It could possibly be due to the fact I have multiple spawn locations for the same team

yes maybe i made it to spawn the player on the block that its name is the same name as the player name you can have multiple spawns but add other spawns in a folder inside them
smt like this
Spawns
–Green
-1
-2
-3
–Blue
-1
-2
-3
etc

local Players = game:GetService("Players")
local SpawnsFolder = workspace.Spawns
Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		local TeamFolder :Folder = SpawnsFolder[plr.Team.Name]
		char:PivotTo(TeamFolder[math.random(1, #TeamFolder:GetChildren())].CFrame)
	end)
end)

i tested it and it spawns a player on a random spawn from his teams spawns

Something like this? (All spawns are disabled so they are just blocks)

image

the folder names should be the exact name of the team but the spawns should be random numbers like 1 2 3 4 etc

the script that i made picks a random team spawn and for it to pick a random one they should be numbers

something like this

image

Alright, they are all enabled and spawning does work; however my issue remains the same with them spawning on top of the RegionalArea part; which is the one with cancollide off.
image

no way that shouldnot even happen are you sure that the spawn is down that floor and not ontop of it?

Yeah, I’m sure; its happening with all the spawns not just this one.

i tested it with terrain and can collide off red part and can collide on blue part on top and it worked fine

i have no idea how that is happening