Yes, it would be welded to the player’s HumanoidRootPart. An uncollidable, massless, and unanchored part. Also, set the CustomPhysicalProperties to set the Density to 0.
You can use this function to get the angle between a CFrame and a Position
local function getAngleBetween(origin: CFrame, target: Vector3): number
local lookVector: Vector3 = origin.LookVector
local unit: Vector3 = (target - origin.Position).Unit
return math.deg(math.acos(unit:Dot(lookVector)))
end
To determine if a Part is behind a player,
local angle = getAngleBetween(character:GetPivot(), part.Position)
if angle >= 135 then
print("Part is behind the Player's Character")
end