title: Creating a buoyant boat in Unity
body: <p>I need to find a way to make a 3D boat, appear to be buoyant in the water. Currently I am using a boat with a flat bottom and making it slide along the terrain, which is just below the water. This is giving the illusion of buoyancy, but not really what I'm looking for.</p>
  
  <p>The boat moves using</p>
  
  <pre><code>this.transform.Translate(Vector3.left * Time.smoothDeltaTime * ((speed) + 1));
  </code></pre>
  
  <p>The boat turns using</p>
  
  <pre><code>this.transform.Rotate(Vector3.forward*Time.smoothDeltaTime*(int)(30*horizontal));
  </code></pre>
  
  <p>The boat has a <strong>RigidBody</strong> that uses gravity, does not interpolate, and has a Continuous Dynamic collision Detection. It also uses a convex <strong>Mesh Collider</strong>, with Smooth Sphere Collisions.</p>
  
  <p>The Water has a <strong>Box Collider</strong> that is used as a trigger.</p>
  
  <hr>
  
  <p>Now I need a way to make the boat seem to float in the water programmatically.
  That means it</p>
  
  <ul>
  <li>Wobbles when it hits something</li>
  <li>Doesn't touch the bottom of the "river"</li>
  <li>Corrects its rotation to stay flat on the river <em>(doesn't stay crooked after hitting an island or other obstacle)</em></li>
  </ul>
  
  <p>I would like to do this so that I can give the base of my boat the correct shape so that it can have more realistic collisions with underwater obstacles.</p>