transform.translate is not accurate

Hello there,
I’m trying to translate a prefab to the point where mouse intersects a collider.

First, i get the coordinates the direction vector by ;

 Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);
 RaycastHit mouseHit;
    
    Physics.Raycast(mouseRay, out mouseHit);

  
         float endXPoint = mouseHit.point.x;
         float endYPoint = mouseHit.point.y;
         float endZPoint = mouseHit.point.z;
        returnVector = new Vector3(endXPoint, endYPoint, endZPoint);

Then,
i try to translate it by

transform.Translate(positionToFly*speedKoef);
 //here positionToFly is the vector that has been calculated before.

I have 2 different origin points which activates these prefabs at the same time ( like dual guns ).
Now, when i start instantiate these prefabs, they arrive at different points!.
It’s like they have some sort of offset.

I think, the line

 Camera.main.ScreenPointToRay(Input.mousePosition);

is causing the problem. Since this is not a FPS game, the camera sits at a different position than guns,so the ray which was drawn calculates a wrong direction ( with some sort of offset ) .

If this is the problem ,how can i solve this? How can i get mouspoint to ray without using Camera.main stuff?

If this is not the problem, how can i solve :p.

Thanks for the assistance.

You will want to subtract the prefab’s spawn position from the returnVector to find the true direction.