Bounciness 0 still bouncing

I have 2 cubes falling under gravity onto a plane "floor"

The plane has no rigidbody, and when the first cube hits it stops dead, which is what i want.

However, when the second cube lands on top of the first it is bouncing, despite both cubes rigidbodies having a physic material with 0 bounciness.

How can i make the cubes stop dead on collision in all situations?

As I wrote in comment Bounciness 0 still bouncing - Unity Answers and as discussed here Physics objects bouncing when bounce is 0!! - Unity Answers
It may be an objects penetration problem.

So, to conclude everything in one post:

  1. To disable bouncing you use the PhysicMaterial, set bounciness to 0 and you may need a bounce combine set to minimum.
  2. Further, you may look at setting Bounce Treschold to some high value (Edit → Project Settings → Bounce Treschold),
  3. If all of that does not help in your case, set
    rigidBody.maxDepenetrationVelocity = 1 for cubes

You need your floor collider also have a 0 bounce material. Note that you don't need a rigidbody to set physics material. It is the collider which provide this property.

I had this issue as well and solved it by removing any positive velocity on every fixed update should there be any. I wrote a short blog post about it here Heavy things should not bounce!

Well, You could disable physic material if cube collides with Plane or you could manually set bounciness to 0 in script when cube collides with plane...

Has bounciness combine also been set to minimum?

Turn up how many physics calculations occur. Could be a problem with calculation accuracy (but seems unlikely with only 2 cubes).

actually I just had what sounds like a similar issue because I wasn’t paying attention. I had a cube that i resized larger than it’s box collider size. I had the floor and cube’s physics material set to no bounce, but it did bounce for an instant according to debug.log outputting oncollide events.

@rcknight, I found a little tricky solution:

public bool landing = false;

void OnCollisionEnter(Collision collision)
{
            landing = true;
}

void FixedUpdate()
{
        if (landing)
        {
            this.GetComponent<Rigidbody>().velocity = new Vector3(0f, 0f, 0f);
            landing = false;
        }
}

So we disable any velocity after landing.

I was having this issue in a “Coin Pusher” game scenario. When dropping coins on the pusher, which is moved via script, the coins would fly off of it. I tried a bunch of things, but what finally fixed it was the “Is Kinematic” setting on the Pusher. Coins are still just “regular” rigid bodies with colliders, but since the Pusher’s moved via script, IsKinematic was needed.