I use a " Timer" for shooting time ( shoot every 30 seconds ) and I use this code to select the place of the bullet on the wall

//------------------------------------------------------------------------//
SetVector(rayStart, GLDummy_Player.AbsolutePosition);
SetVector(rayVector, GLSceneViewer1.Buffer.ScreenToVector (AffineVectorMake(CurseX, GLSceneViewer1.Height-CurseY, 0)));
NormalizeVector(rayVector);
if GLFreeForm1.RayCastIntersect(rayStart, rayVector, @iPoint, @iNormal) then
begin
// create transparent plane
end;
//------------------------------------------------------------------------//

I think the problem because that code but I didn't find any another one to select the place on the GLFreeform