Raycast shooting for multiple weapons

I need some advice on how to set-up ray points so i can shoot multiple weapons.

I have 3 + guns. The guns are attached to the FPS capsule in there normal holding position(hip). I have made a simple C# script for shooting. I created an empty cube and placed it infront of one of my guns. In the C# script i used debug and color so i can see the raycast line.

In order for the line to work or should i say “visible” i dont know. Either way, when i hit the f key i had to make the empty cube called “ray point” a child of main camera.
Now, this will only shoot from one position.

I only have one camera in my project. From my main camera i have an child empty object named “player weapons” from there its child are my weapons. I dont have a weapons camera.

I am assuming that i need to set up 2 ray cast points(hip and aim) to shoot from?

I have a gun animation that sets it into aiming position.

Im just unsure how i can set this up for each gun and have it follow / shoot wherever its aiming(hip, aim).

public class RayShootAK47 : MonoBehaviour {

	public float range = 1000;
	public float force = 1000;
	public RaycastHit hit;
	void Start () {
	void Update () {
	public  void Rayshoot(){
		Vector3 direction_ray = transform.TransformDirection(Vector3.forward);
		Debug.DrawRay(transform.position, direction_ray * range, Color.blue);
		if(Physics.Raycast(transform.position, direction_ray, out hit, range)){

If you want to always hit the center of the screen (where you can draw a crosshair), create a ray based on the camera:

  Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
  if (Physics.Raycast(ray, out hit, range)){
    // something was hit

This would not work for instantiated projectiles because you could see them starting at the camera position, but works fine for raycast shooting, since you can’t see the ray anyway.