Have primitive, Script works perfectly except wont allow back movement, problem with code logic. Help!

Heres the two scripts:

#pragma strict
    //fire.js
var CubePosition : Transform;
    public var theCube : GameObject;
    var cubeAngle : Quaternion;
    var cubePlace : Vector3;
    var cubeForce : theCubeForce;
    
function Start () {
   
    cubePlace = theCube.transform.position;
    cubeAngle = theCube.transform.rotation;
    Debug.Log ("cubeAngle" + cubePlace);

}

function FixedUpdate () {
    
    var hit : RaycastHit ; 
    var ray:Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    var dir : int = Random.Range(0,4);
    
    if (Physics.Raycast (ray,hit,100)){
        Debug.DrawLine(ray.origin,hit.point);
	    
	    if(Input.GetButtonDown("Fire1") && hit.collider.gameObject.name == "theCube"){
	    	cubeForce = hit.collider.gameObject.GetComponent(theCubeForce);
	        
	     
			switch( dir ) {
				case 0: cubeForce.goRight = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
				case 1: cubeForce.goLeft = true;cubeForce.goRight = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
				case 2: cubeForce.goForward = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goRight = false;break;
				case 3: cubeForce.goBack = true;cubeForce.goLeft = false;cubeForce.goRight = false;cubeForce.goForward = false;break;
	    	}
	    }
        if(Input.GetButtonDown("Fire1") && hit.collider.gameObject.name == "theCube" && cubeForce.goRight == true){
	    	cubeForce = hit.collider.gameObject.GetComponent(theCubeForce);
	     	dir = Random.Range(0,3);
			switch( dir ) {
				case 0: cubeForce.goLeft = true;cubeForce.goRight = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
				case 1: cubeForce.goForward = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goRight = false;break;
				case 2: cubeForce.goBack = true;cubeForce.goLeft = false;cubeForce.goRight = false;cubeForce.goForward = false;break;
			}
    	}
	    if(Input.GetButtonDown("Fire1") && hit.collider.gameObject.name == "theCube" && cubeForce.goLeft == true){
	    	cubeForce = hit.collider.gameObject.GetComponent(theCubeForce);
	     	dir = Random.Range(0,3);
			switch( dir ) {
				case 0: cubeForce.goRight = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
				case 1: cubeForce.goForward = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goRight = false;break;
				case 2: cubeForce.goBack = true;cubeForce.goLeft = false;cubeForce.goRight = false;cubeForce.goForward = false;break;
			}
	    }
	    if(Input.GetButtonDown("Fire1") && hit.collider.gameObject.name == "theCube" && cubeForce.goForward == true){
	    	cubeForce = hit.collider.gameObject.GetComponent(theCubeForce);
	     	dir = Random.Range(0,3);
			switch( dir ) {
				case 0: cubeForce.goRight = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
				case 1: cubeForce.goLeft = true;cubeForce.goForward = false;cubeForce.goBack = false;cubeForce.goRight = false;break;
				case 2: cubeForce.goBack = true;cubeForce.goLeft = false;cubeForce.goRight = false;cubeForce.goForward = false;break;
			}
	    }
	    if(Input.GetButtonDown("Fire1") && hit.collider.gameObject.name == "theCube" && cubeForce.goBack == true){
	    	cubeForce = hit.collider.gameObject.GetComponent(theCubeForce);
	     	dir = Random.Range(0,3);
			switch( dir ) {
				case 0: cubeForce.goRight = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
				case 1: cubeForce.goForward = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goRight = false;break;
				case 2: cubeForce.goLeft = true;cubeForce.goBack = false;cubeForce.goRight = false;cubeForce.goForward = false;break;
				}
	    	}
        
        }
}

//theCubeForce.js

#pragma strict
var speed : float = 0.1;
var goLeft : boolean = false;
var goRight : boolean = false;
var goBack : boolean = false;
var goForward : boolean = false;
 
 
function Start(){
    goForward = true;
}

function FixedUpdate() {
	if(goLeft == true){
   		transform.Translate(Vector3(speed*2*Time.deltaTime,0,0));
	}
	
	if(goRight == true){
   		transform.Translate(Vector3(-speed*2*Time.deltaTime,0,0));
	}
	
	if(goForward == true){
   		transform.Translate(Vector3(0,0,speed*2*Time.deltaTime));
	}
	
	if(goBack == true){
   		transform.Translate(Vector3(0,0,-speed*2*Time.deltaTime));
	}
}

Need a fresh pair of eyes, would love some help on this guys, thanks in advance .

Not sure why but the RandomRange you’ve put for the different directions never seem to hit case 3. If you change the range from 0,4 you will start getting the back active once in a while. Hope that is a good enough fix for ya.

Also you could just delete 80% of the code and get the same function.

#pragma strict
    //fire.js
var CubePosition : Transform;
    public var theCube : GameObject;
    var cubeAngle : Quaternion;
    var cubePlace : Vector3;
    var cubeForce : theCubeForce;
 
function Start () {
 
    cubePlace = theCube.transform.position;
    cubeAngle = theCube.transform.rotation;
    Debug.Log ("cubeAngle" + cubePlace);
}
 
function FixedUpdate () {
 
    var hit : RaycastHit ; 
    var ray:Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    var dir : int = Random.Range(0,4);
 
    if (Physics.Raycast (ray,hit,100)){
        Debug.DrawLine(ray.origin,hit.point);
 
        if(Input.GetButtonDown("Fire1") && hit.collider.gameObject.name == "theCube"){
           cubeForce = hit.collider.gameObject.GetComponent(theCubeForce);
 
 
         switch( dir ) {
          case 0: cubeForce.goRight = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
          case 1: cubeForce.goLeft = true;cubeForce.goRight = false;cubeForce.goBack = false;cubeForce.goForward = false;break;
          case 2: cubeForce.goForward = true;cubeForce.goLeft = false;cubeForce.goBack = false;cubeForce.goRight = false;break;
          case 3: cubeForce.goBack = true;cubeForce.goLeft = false;cubeForce.goRight = false;cubeForce.goForward = false;break;
           }
        }

    }
}

This will work just fine.