# NPCs Spawning in Ground

Hello there!

I’ve you’ve ever played Gmod, you know you can install addons. I’m trying to recreate the Background NPCs addon inside Roblox.

So far, it’s great! I’m just optimizing it and such, but there’s one issue. I’m using this code to spawn NPCs in a circle.

``````-- Generate a random angle in radians
local angle = math.rad(math.random(0, 360))

-- Calculate the x and z coordinates on the circumference of the circle
local x = center.X + radius * math.cos(angle)
local z = center.Z + radius * math.sin(angle)

-- Create the Vector3 using the calculated coordinates
newPosition = CFrame.new(Vector3.new(x, center.Y, z))
``````

(center is a player’s root position)

This works great, but sometimes npcs spawn inside a wall for example. I was thinking of using raycasting to prevent this, but it sounds really slow.

Any ideas?

You could try using Region3 to check for potential collisions.

``````local function isPositionObstructed(position)
-- Perform collision check
local region = Region3.new(position - Vector3.new(1, 2, 1), position + Vector3.new(1, 2, 1))
local parts = workspace:FindPartsInRegion3(region, nil, math.huge)

-- Check if any part is obstructing the position
for _, part in ipairs(parts) do
if part.CanCollide then
return true
end
end

return false
end
``````

Thanks, I’ll try your code out now!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.