rbBall.velocity=rb.velocity+transform.forward*15; doesn´t behave like i think it should.,rbBall.velocity=transfor.velocity+transform.forward

Hello Guys
At first a big Thanks for the many time this forum helped me in my not long Dev Carreer^^

Now to the Problem:
I have a Model in FirstPerson, that catches a Ball. As long the model has the ball, the Bal is set to the position:

Vector3 ballpos = transform.position + transform.forward*2; Ball.transform.position=ballpos;

so in front of the Model. This works realy fine.
Now the problem is if i try to shoot or better throw the ball, the ball goes off in allways diferent directions and i don´t get why.

This is the Code:

if (Position == 2) {
			Ball= GameObject.FindGameObjectWithTag ("Ball");
			Ballscript Ballscript = Ball.GetComponent<Ballscript>();
			if (Ballscript.caught == 1 && caught==1) {

				Vector3 ballpos = transform.position + transform.forward*2;//+ transform.right;

				cancaught = 1;

				if (Input.GetMouseButtonDown (0)) {   
					Rigidbody rbBall = Ball.GetComponent<Rigidbody>();

					rbBall.velocity += rb.velocity+(transform.forward * 15)  ;
					Ballscript.caught = 0;
					Ballscript.shoot = 0;
					timernotcaught = 0;

			timernotcaught += Time.deltaTime;
			if (timernotcaught>0.2) {
				cancaught = 0;//0 can be caught, 1 cannot be caught

I thryed it with AddForce too, but the results were even worser.
I hope you can help me

can u send the full script ?

i wonder if all of these is in your update method then it will be very heavy and i cant see wich one is happening in these methodes;

Oh by the way the player can move in 3d and the ball too.