Send raycast in a vertical position.

So I am trying to send a raycast to an object but the raycast will only shoot at the same vertical position forward. I see the problem but I do not know how to fix it. Here is my code, It is still really short. and easily understandable. Any help is greatly appreciated guys!
Thanks in advance! (:

using UnityEngine;
using System.Collections;

public class Shoot : MonoBehaviour {

    void Update() 
    {
        CheckIfCollide();
    }

    public void CheckIfCollide()
    {
        if(Input.GetKeyDown(KeyCode.LeftShift)) 
        {
            Vector3 fwd = transform.TransformDirection(Vector3.forward);
            if (Physics.Raycast(transform.position, fwd, 10)) 
            {
                Debug.Log("There is something in front of the object!");
                Debug.DrawRay(transform.position, fwd, Color.blue, 10);

            } else {
               Debug.Log("There Is nothing in front of the object!");
               Debug.DrawRay(transform.position, fwd, Color.red, 10);
            }
        }
    }
}

The problem here, is that you are taking the raycast from the wrong part of your First-Person-Controller! In most first-person situations, there are two objects which work together- the first is the ‘body’, which always points up, and swivels around on its feet to point the player in different directions. The second is the ‘head’ which pivots up and down, to allow the player to look up and down.

Your current arrangement takes the forward vector from the ‘body’ section- so, it will always point ‘forwards’ from your character’s perspective, but will not accurately represent where the player is actually looking! Instead, take the vector from the main camera, like so-

Vector3 fwd = Camera.main.transform.forward;

This will give you the vector which points down the middle of the camera view- good for basic weapon crosshairs, local object manipulation, and line-of-sight checking.