title: Rigidbodies touching but OnCollisionStay stops being called (Unity3D)
body: <p>I want to simulate two pistons that replicates the behaviour of a balance. I'm doing this with spring joints and applying the inverse weight one another when OnCollisionStay is called. This are my pistons and their rigidbodies and joints. Are exactly the same on both.</p>
  
  <p><img src="https://i.gyazo.com/9c7b430aa1ebe088ceff2ff333717968.png" alt="two pistons"></p>
  
  <p>This is my SpringForceTransmisor.cs code:
  using UnityEngine;</p>
  
  <pre><code>public Rigidbody InverseJoint;
  
  private void OnCollisionEnter(Collision collision) {
      Debug.Log("Enter");
  }
  
  private void OnCollisionExit(Collision collision) {
      Debug.Log("Exit");
  }
  
  private void OnCollisionStay(Collision collision) {
      InverseJoint.AddForce(-(collision.rigidbody.mass * Physics.gravity));
      Debug.Log("Stay");
  }
  </code></pre>
  
  <p>And <a href="https://i.gyazo.com/99ce9bb4167d90c46261f4120ce8e516.mp4" rel="nofollow noreferrer">this is a video</a> of what's happening.</p>
  
  <p>So, according to the log showed on the video, OnCollisionStay() stops being called even if OnCollisionExit() had never been called. How is this possible? I've always thought that OnCollisionStay() is called every frame from OnCollisionEnter frame and OnCollisionExit frame.</p>
  
  <p>Can anyone shed some light about what's going on here?</p>