rigidbody problem

Hey, I am making a pokemon like game but you actually play and battle with the pokemon in the world. I control the pokemon with rigidbody.AddForce. That works perfectly. The problem comes when I bump into another rigidbody it will act funny after I bump into it. It is like the force of the bump is still being applied to my rigidbody. It will continually slowly move or jiggle around in the vector of the other rigidbody. I want to stop this from happening. I don’t know how. The same thing also occurs with the rigidbody I touched. I tried increasing the mass and drag but it still happens. When I increase the mass it has a less affect on me but a increased affect on the other rigidbody. Which I also don’t want.

Here is the code to make me move.

var spawnPoint : GameObject;
var delay : boolean;
var delay1 : boolean;

function Update () {
	//rotate towards mouse
    var playerPlane = new Plane(Vector3.up, transform.position);
 
    var ray = Camera.main.ScreenPointToRay (Input.mousePosition);

    var hitdist = 0.0;

    if (playerPlane.Raycast (ray, hitdist)) {
        var targetPoint = ray.GetPoint(hitdist);
        var targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
        transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
    }
    // move
    if(Input.GetKey("w")){
    	//force is high because drag is really high
    	rigidbody.AddForce(transform.forward * 4000);
    	
    }
     if(Input.GetKey("s")){
    	rigidbody.AddForce(transform.forward * -3600);
    }
    //attack
    if(Input.GetMouseButtonDown(1) && !delay){
    	delay = true;
    	var attack = Instantiate(Attack1, spawnPoint.transform.position, spawnPoint.transform.rotation);
    	attack.rigidbody.AddForce(transform.forward * 800);
    	Delay();
    }
    if(Input.GetMouseButtonDown(0) && !delay1){
    	delay1 = true;
    	var attack1 = Instantiate(Attack2, spawnPoint.transform.position, spawnPoint.transform.rotation);
    	attack1.rigidbody.AddForce(transform.forward * 800);
    	Delay1();
    }
}

function Delay(){
	if(delay){
		yield WaitForSeconds(1);
		delay = false;
	}
}

function Delay1(){
	if(delay1){
		yield WaitForSeconds(.2);
		delay1 = false;
	}
}

All I had to do was put this on my move script

function OnCollisionStay(other : Collision){
	rigidbody.velocity = Vector3(0,0,0);
	rigidbody.AddForce(transform.forward * 0);
	rigidbody.AddForce(transform.right * 0);
	rigidbody.angularVelocity = Vector3(0,0,0);	
}

not sure if you need the AddForce ones but it works fine with them