I don’t get why you cannot use raycasting, it returns a position where it was intersecting with a part, so, if the part was touched at 0, 0, 0 then you could use that, you can also try using the SurfaceNormal, which is also a return of the raycast; this topic might help: