Question occurred when trying to control a game object by keyboard.

I’m new to unity and I’m trying to make a demo where I can control the player’s movement by left/right arrow key.
My script works well when I take a single cube as my ground. However when I want to use several cubes together to make a ground, the player couldn’t move smoothly.
It seems that the player would stop at the edge of a cube but not every one which made me confused.
Here’s my code:
using UnityEngine;
using System.Collections;

public class player : MonoBehaviour {
	public float Xspeed = 0;
	public float Yspeed = 0;
	public int a = 0;
	void OnCollisionEnter(Collision col){
		if (col.collider.tag == "Ground")
			a = 0;
	}
	// Use this for initialization
	void Start () {
		Physics.gravity = new Vector3 (0, -10, 0);
	}

	// Update is called once per frame
	void Update () {
		//左右方向键控制
		if (Input.GetKey (KeyCode.RightArrow)) {
//			print ("right");
			Vector3 vel = this.GetComponent<Rigidbody> ().velocity;
			this.GetComponent<Rigidbody> ().velocity = new Vector3 (8, vel.y, vel.z);
		}
		if (Input.GetKey (KeyCode.LeftArrow)) {
//			print ("left");
			Vector3 vel = this.GetComponent<Rigidbody> ().velocity;
			this.GetComponent<Rigidbody> ().velocity = new Vector3 (-8, vel.y, vel.z);
		}
		//跳跃
		if (Input.GetKeyDown (KeyCode.Space) && a < 2 ) {	
//			print ("jump");	
			this.gameObject.GetComponent<Rigidbody>().velocity = new Vector3(Xspeed,5,0);
			a++;
		}

	}
}

The player is a cube object and it has a Rigidbody and a Box collider. Rotation on all directions are not allowed.
The ground are made of several identical cube object with Box collider. They don’t have Rigidbody.

Put a physics material on the player and set the friction to 0