Physics materials help objects in a game behave realistically when they touch or collide. They control how slippery or bouncy an object is.
Physics materials (friction, bounce) in Unity
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Unity
PhysicMaterial material = new PhysicMaterial(); material.dynamicFriction = 0.5f; material.staticFriction = 0.5f; material.bounciness = 0.8f; material.frictionCombine = PhysicMaterialCombine.Multiply; material.bounceCombine = PhysicMaterialCombine.Average; Collider collider = gameObject.GetComponent<Collider>(); collider.material = material;
dynamicFriction controls friction when objects are moving.
staticFriction controls friction when objects are still.
Examples
Unity
PhysicMaterial ice = new PhysicMaterial(); ice.dynamicFriction = 0.1f; ice.staticFriction = 0.1f; ice.bounciness = 0f; Collider iceCollider = iceObject.GetComponent<Collider>(); iceCollider.material = ice;
Unity
PhysicMaterial rubber = new PhysicMaterial(); rubber.dynamicFriction = 0.4f; rubber.staticFriction = 0.4f; rubber.bounciness = 0.9f; Collider ballCollider = ball.GetComponent<Collider>(); ballCollider.material = rubber;
Sample Program
This script creates a bouncy physics material and applies it to the object's collider. It also prints a message to confirm the bounciness value.
Unity
using UnityEngine; public class MaterialExample : MonoBehaviour { void Start() { PhysicMaterial bouncyMaterial = new PhysicMaterial(); bouncyMaterial.dynamicFriction = 0.2f; bouncyMaterial.staticFriction = 0.2f; bouncyMaterial.bounciness = 0.8f; bouncyMaterial.frictionCombine = PhysicMaterialCombine.Average; bouncyMaterial.bounceCombine = PhysicMaterialCombine.Maximum; Collider col = GetComponent<Collider>(); if (col != null) { col.material = bouncyMaterial; Debug.Log("Bouncy material applied with bounciness: " + bouncyMaterial.bounciness); } else { Debug.Log("No collider found on this object."); } } }
Important Notes
Always make sure your object has a Collider component before assigning a physics material.
Friction and bounce combine modes affect how materials interact when touching.
Changing physics materials can help make your game feel more natural and fun.
Summary
Physics materials control friction and bounce on objects.
Use them to make surfaces slippery, sticky, or bouncy.
Assign physics materials to colliders to change how objects behave on contact.
Practice
1. What does a Physics Material in Unity primarily control?
easy
Solution
Step 1: Understand the role of Physics Materials
Physics Materials are used to define how surfaces interact physically, mainly controlling friction and bounce.Step 2: Identify what Physics Materials affect
They affect colliders by changing friction (slipperiness or stickiness) and bounce (how much objects rebound).Final Answer:
Friction and bounce behavior of colliders -> Option DQuick Check:
Physics Material = friction and bounce control [OK]
Hint: Physics Materials change friction and bounce, not visuals [OK]
Common Mistakes:
- Confusing Physics Material with visual materials
- Thinking it controls Rigidbody speed
- Assuming it changes collider size
2. Which of the following is the correct way to assign a Physics Material to a Collider in Unity using C#?
easy
Solution
Step 1: Recall the correct property name for Physics Material
In Unity, the Collider component uses the property 'material' to assign a Physics Material.Step 2: Check the options for correct syntax
collider.material = myPhysicsMaterial; uses 'collider.material', which is correct. Other options use incorrect property names or 2D-specific properties.Final Answer:
collider.material = myPhysicsMaterial; -> Option AQuick Check:
Collider.material assigns Physics Material [OK]
Hint: Use collider.material to assign Physics Material [OK]
Common Mistakes:
- Using 'physicsMaterial' instead of 'material'
- Confusing 3D and 2D collider properties
- Misspelling 'physicMaterial'
3. Consider the following C# code in Unity:
PhysicsMaterial2D bouncyMaterial = new PhysicsMaterial2D(); bouncyMaterial.bounciness = 1.0f; Collider2D col = gameObject.GetComponent<Collider2D>(); col.sharedMaterial = bouncyMaterial; Rigidbody2D rb = gameObject.GetComponent<Rigidbody2D>(); rb.velocity = new Vector2(0, -10);What will happen when this object hits the ground?
medium
Solution
Step 1: Analyze the Physics Material bounciness
The bouncyMaterial has bounciness set to 1.0, which means full bounce with no energy loss.Step 2: Understand the effect on collision
Assigning this material to the collider means the object will bounce back with the same speed it hit the ground.Final Answer:
It will bounce back with the same speed it hit the ground -> Option AQuick Check:
Bounciness 1.0 means full bounce [OK]
Hint: Bounciness 1 means full bounce, no speed lost [OK]
Common Mistakes:
- Assuming bounciness 1.0 means no bounce
- Confusing sharedMaterial with material
- Ignoring Rigidbody velocity effect
4. You wrote this code to make an object slippery:
PhysicsMaterial2D slippery = new PhysicsMaterial2D(); slippery.friction = 0f; Collider2D col = gameObject.GetComponent<Collider2D>(); col.material = slippery;But the object still slides slowly. What is the likely mistake?
medium
Solution
Step 1: Check the property used for assignment
Collider2D usessharedMaterialproperty to assign PhysicsMaterial2D, notmaterialwhich does not exist on Collider2D.Step 2: Understand the consequence
Using the wrong property means the custom material with friction=0 is not assigned; default material with friction >0 is used, causing slow sliding.Final Answer:
You assigned the material to 'col.material' instead of 'col.sharedMaterial' -> Option BQuick Check:
Collider2D.sharedMaterial is the correct property [OK]
Hint: Collider2D: use sharedMaterial, not material [OK]
Common Mistakes:
- Thinking friction 0 disables all slowing forces
- Confusing material and sharedMaterial assignment
- Believing Physics Materials don't affect friction
5. You want to create a bouncy ball that loses some energy on each bounce and slides slowly on the floor. Which settings for Physics Material friction and bounciness should you use?
hard
Solution
Step 1: Understand desired bounce behavior
The ball should bounce but lose some energy, so bounciness should be less than 1, e.g., 0.5.Step 2: Understand desired sliding behavior
To slide slowly, friction should be moderate to high, e.g., 0.8, to resist sliding.Final Answer:
friction = 0.8, bounciness = 0.5 -> Option CQuick Check:
Moderate friction and bounciness = slow slide + partial bounce [OK]
Hint: Use moderate friction and bounciness for slow slide and partial bounce [OK]
Common Mistakes:
- Using zero friction causes too much sliding
- Using bounciness 1.0 causes full bounce with no energy loss
- Confusing friction and bounciness values
