The Developer Hub is now deprecated and information on this page may no longer be accurate. Instead, you should go to our new and improved documentation. You can also learn more about the future of documentation.
Collapse Sidebar


This function is a variant of WorldRoot/FindPartOnRay with the addition of a whitelist. This lets you detect only certain parts or Model|Models and is particularly useful when, for example, looking for points of intersection between a ray and a single part.

local function getIntersection(part, ray)
	local whiteList = {part}
	local _, position, normal = workspace:FindPartOnRayWithWhitelist(ray, whiteList)
	return position, normal

Those looking to utilize an ignore list instead should use WorldRoot/FindPartOnRayWithIgnoreList.


  • If a nil value is given in the whitelist, instances after it will be disregarded.
  • Theoretically, a ray extends infinitely in one direction. However, the max length of the direction vector on Roblox is 5000 studs.
  • The length (magnitude) of the directional vector is important, as parts further away than its length will not be tested.
  • If the ray does not intersect anything, the return values will be nil and the point at the end of the ray, respectively.
  • Parts that are in a articles/Collision Filtering|collision group that does not collide with the “Default” collision group are ignored implicitly.


Name Type Default Description




Return Type Summary

The BasePart or Terrain cell hit, the DataType/Vector3 point of intersection, the DataType/Vector3 surface normal at the point of intersection, and the Enum/Material of the BasePart or terrain cell hit.