title: Normalize the force added by AddForce to 3D object
body: <p>I have a ball bouncing up and down my scene with the following script:</p>
  
  <pre><code>public class Ball : MonoBehaviour {
  
      public float speed;
      public float globalGravity;
  
      Rigidbody ball;
  
      void Start()
      {
          ball = GetComponent&lt;Rigidbody&gt;();
      }
  
      void FixedUpdate()
      {
          Vector3 gravity = globalGravity * Vector3.up;
          ball.AddForce(gravity, ForceMode.Acceleration);
      }
  
      void Force(float force)
      {
          ball.AddForce(Vector3.up * force, ForceMode.Impulse);
      }
  
      void OnCollisionEnter(Collision collision)
      {    
          Force(speed);
      }
  }
  </code></pre>
  
  <p>If the ball hits a flat surface it's propelled upwards like the script implies, but I've found that if it hits a platform that is angled then the force applied is much weaker and the ball doesn't bounce as high.  Is there a reason for this, and a way I can get the force to be equal no matter what the angle of the surface it collides with is?</p>