Add Relative Force doesn't really working for me

I’ve used a collision method for when I push a ball on a cube, I want to cube to be pushed in the opposite direction of the ball, so I’ve used this script on the ball:
(I tagged the cube as Sphere, don’t pay attention to it).

void OnCollisionEnter(Collision c){
		if(c.gameObject.tag == "Sphere"){
			Vector3 v = new Vector3(2000F,0,0);
			c.gameObject.rigidbody.AddRelativeForce(v);
			
		}
	}

So the ball does push the cube, but only at the world x axis direction.
there is no Relative force feeling about it at all.

Any suggestion how to fix this?

Rigidbody.AddRelativeForce applies a force to the rigidbody based on its own coordinate system, regardless of the orientation of other objects that are colliding with it. Since you set your force to (2000,0,0), the cube will always be pushed in that direction, relative to its own orientation. If you want to apply a force that pushes the cube away from the ball, then you need to find the vector that points from the ball to the cube and use rigidbody.AddForce (not AddRelativeForce) to push it in that direction. Try this:

public float pushForce = 2000f;

void OnCollisionEnter(Collision c){
    if(c.gameObject.tag == "Sphere"){
         Vector3 v = (c.transform.position - transform.position).normalized * pushForce;
         c.gameObject.rigidbody.AddForce(v);
 
    }
}