Can you move a rigid body object forward without using relative force? If so, how?

I’m trying to make an object that moves along it’s local Z axis but when I use AddRelativeForce it ends up sliding all over the place when I turn the object. I want a character to stop the second the walk key is released and to turn sharply, similar to games like Wizard 101. I’m using C#, here’s my code so far:

using UnityEngine;
using System.Collections;

public class character_controller_script : MonoBehaviour {
public Rigidbody playerRB;
public float playerWalkSpeed;
public CapsuleCollider playerCapsuleColider;
public float playerJumpPower;

void Start(){
	playerRB = GetComponent<Rigidbody> ();
	playerCapsuleColider = GetComponent<CapsuleCollider> ();
	playerWalkSpeed = 8.0f;
}
void Update(){
	float velocity = Input.GetAxis ("Vertical");
	float rotation = Input.GetAxis ("Horizontal");
	Vector3 movement = new Vector3 (0.0f, 0.0f, velocity);
	playerRB.AddRelativeForce (playerWalkSpeed * movement); //This is what I need to get rid of, but how?
	playerRB.transform.Rotate (Vector3.up * rotation);
}

}

I have the camera, the player object, and everything else inside the same game object so I don’t need to worry about anything else right now, I just need to stop having the character drift.

!!!EDIT 9/4/2015!!!

I also need it to move forward and back on it’s local axis, not it’s global axis.
The rotation is there to let the player turn, along with the camera, so don’t worry about the character moving left and right, that isn’t happening, just turning.

Give Rigidbody velocity a go. It is a direct manipulation, so you dont get stuff like acceleratio given to you like with addforce etc. though. If you just want it to be straight up instant then it is a good choice.

inputDir.x = player.GetAxis("Move Horizontal");
inputDir.z = player.GetAxis("Move Vertical");

GetComponent<Rigidbody>().velocity = inputDir * speed;

rigidbody.AddForce(vector3.forward);