So I have my spawn position randomizer figured out, but when the part I want to randomize on is not square it only spawns 2-5 Y studs around the middle of the rectangle but spawns horizontally(90 degrees off) the length of the rectangle
local function SpawnPart(SpawnLocation) local ChosenSpawn = SpawnLocation
local RNG = Random.new()
local Part = ChosenSpawn
local Rx,Ry,Rz = ChosenSpawn.Orientation.X,ChosenSpawn.Orientation.Y,ChosenSpawn.Orientation.Z
local Position = ChosenSpawn.Position --+ ChosenSpawn.Orientation
local Size = Part.Size
local MinX , MaxX = Position.X - Size.X/2, Position.X + Size.X/2
local MinZ, MaxZ = Position.Z - Size.Z/2, Position.Z + Size.Z/2
local X, Y, Z = RNG:NextNumber(MinX, MaxX), Position.Y + Item.PickablePart.Size.Y/2 , RNG:NextNumber(MinZ, MaxZ)
local RanPosition = Vector3.new(X, Y, Z)
Item:SetPrimaryPartCFrame(CFrame.new(RanPosition))
-- Get and set the new 'Y' Value by firing a raycast down to find 'Y'
local Rotation = CFrame.fromEulerAnglesXYZ(0,math.rad(math.random(1,360)),0)
local rayOrigin = Item.PickablePart.Position
local rayDirection = Vector3.new(0, -100, 0)
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {Item}
raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
local raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams)
if raycastResult then
local hitPart = raycastResult.Instance
if hitPart then
Item:SetPrimaryPartCFrame(CFrame.new(Vector3.new(X, raycastResult.Position.Y + Item.PickablePart.Size.Y/2, Z))* Rotation)
end
end
end
