RayCasting won't detect collision

Hello, I’m fairly new to Raycasting and I’m running into this problem with my player (Attached with player controller) GameObject.
Basically I want to have my player moving on a 3D grid-base puzzle, grid by grid corresponding with each keystroke.

I have the basic movement set up but I want the player to detect Obstacles using Raycast so if the collider is a obstacle the player will not “Move” at all towards it.

my script looks like this:

CharacterController controller;
public float distance;
void Start(){
	controller = GetComponent<CharacterController>();
	temp = level;
void Update() {
	RaycastHit hit;
	Ray landingRay = new Ray (controller.transform.position, getDirection ());
            // The problem is here
	if (Physics.Raycast (landingRay, out hit, distance)) {
		if(hit.collider.tag != "Obstacle")
			Move ();

private Vector3 newPos;
Vector3 getDirection(){
	newPos = controller.transform.position;
	Vector3 right = new Vector3(distance, 0, 0);	Vector3 left = new Vector3(-distance, 0, 0);
	Vector3 forward = new Vector3(0, 0, distance);	Vector3 back = new Vector3(0, 0, -distance);
	if (Input.GetButtonDown ("Horizontal") && Input.GetAxis ("Horizontal") > 0) {newPos += right;	return right;}
	if (Input.GetButtonDown ("Horizontal") && Input.GetAxis ("Horizontal") < 0) {newPos += left;	return left;}
	if (Input.GetButtonDown ("Vertical") && Input.GetAxis ("Vertical") > 0) {newPos += forward;		return forward;}
	if (Input.GetButtonDown ("Vertical") && Input.GetAxis ("Vertical") < 0) {newPos += back;		return back;}
	return Vector3.zero;

void Move(){
	controller.SimpleMove(newPos - controller.transform.position);

Any suggestions?

On line 11 you require the raycast to hit something in order to move at all.

My guess is that you aren’t hitting anything when trying to move into an open square.


     if (Physics.Raycast (landingRay, out hit, distance)) {
         if(hit.collider.tag != "Obstacle")
             Move ();
     } else {
         Move ();