C# RaycastHit not working tried everything

I am trying to get my script to see if the RaycastHit object has the tag of “Enemy”. I have tried almost everything. Unity is not giving me any errors of any cind.

Here is my script.

using UnityEngine;
using System.Collections;

public class Shoot : MonoBehaviour {

	public float Damage;
	public AudioClip GunSound;
	public AudioClip HitSound;
	public string GunShootAnim;
	public string ScopeIn;
	public string ScopeOut;
	public Animation GunShootAnimHolder;
	public Animation ScopeAnimHolder;
	public Transform SwayHolder;
	public Transform FirePoint;
	public Transform HitPoint;
	public Transform Cam;

	public bool HITTED;

	RaycastHit Hit;

	void Update () {

		if (Input.GetMouseButtonDown(0)){

			AudioSource.PlayClipAtPoint(GunSound, FirePoint.position);
			if (Physics.Raycast(FirePoint.position, FirePoint.forward, out Hit) && Hit.transform.tag == "Enemy"){ // Here is the problem.
				Hit.collider.GetComponent<Health>().HP -= Damage;
				AudioSource.PlayClipAtPoint(HitSound, FirePoint.position);

		if (Input.GetMouseButtonDown(1)){
		if (Input.GetMouseButtonUp(1)){

		HitPoint.position = Hit.point;
		RaycastHit GunRotationHit;
		Physics.Raycast(Cam.position, Cam.forward, out GunRotationHit);
		if (GunRotationHit.transform == null){

		SwayHolder.LookAt (GunRotationHit.point);


I don’t know when you use && in a if statement that it will always execute from left to right. You can find out more if you want, instead of doing it in one line just do

if (Physics.Raycast(Firepoint.position, Firepoint.forward, out Hit){
    if (Hit.transform.tag == “Ememy”){

P.S. Past tense of hit is hit, not “hitted”. Use hitObject, it’s gonna make some grammar Nazi’s very angry.