How to Use 2D Physics in Unity: Simple Guide
To use
2D physics in Unity, add Rigidbody2D and Collider2D components to your GameObjects. Control physics behavior by adjusting Rigidbody2D properties and handle collisions using Unity's event methods like OnCollisionEnter2D.Syntax
Unity's 2D physics uses components attached to GameObjects. The main parts are:
- Rigidbody2D: Makes the object respond to physics forces and gravity.
- Collider2D: Defines the shape for collision detection (e.g., BoxCollider2D, CircleCollider2D).
- Physics2D Methods: Functions like
OnCollisionEnter2Ddetect collisions.
You control physics by changing Rigidbody2D properties like velocity or applying forces.
csharp
public class SimplePhysics : MonoBehaviour { private Rigidbody2D rb; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { // Move right constantly rb.velocity = new Vector2(5f, rb.velocity.y); } void OnCollisionEnter2D(Collision2D collision) { Debug.Log("Collided with " + collision.gameObject.name); } }
Example
This example shows a GameObject moving right with 2D physics and detecting collisions. Attach this script to a GameObject with Rigidbody2D and a BoxCollider2D.
csharp
using UnityEngine; public class MoveAndCollide : MonoBehaviour { private Rigidbody2D rb; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { rb.velocity = new Vector2(3f, rb.velocity.y); } void OnCollisionEnter2D(Collision2D collision) { Debug.Log("Hit " + collision.gameObject.name); } }
Output
When the GameObject moves and hits another collider, the console logs: "Hit [OtherObjectName]"
Common Pitfalls
- Forgetting to add
Rigidbody2Dmeans physics won't affect the object. - Using 3D colliders (
Collider) instead of 2D colliders (Collider2D) causes no collisions. - Setting Rigidbody2D to
isKinematicdisables physics forces. - Not setting collision layers properly can prevent collision events.
csharp
/* Wrong: Using 3D collider with 2D physics */ // GameObject has Rigidbody2D but BoxCollider (3D) instead of BoxCollider2D /* Right: Use 2D collider */ // GameObject has Rigidbody2D and BoxCollider2D
Quick Reference
| Component/Method | Purpose |
|---|---|
| Rigidbody2D | Enables physics simulation on 2D GameObjects |
| BoxCollider2D / CircleCollider2D | Define collision shapes for 2D objects |
| OnCollisionEnter2D | Called when this object collides with another |
| velocity (Rigidbody2D) | Controls object speed and direction |
| AddForce (Rigidbody2D) | Applies a force to move the object |
Key Takeaways
Add Rigidbody2D and Collider2D components to use 2D physics in Unity.
Use Rigidbody2D properties like velocity or AddForce to move objects.
Handle collisions with OnCollisionEnter2D and related event methods.
Always use 2D colliders with Rigidbody2D, not 3D colliders.
Check collision layers and Rigidbody2D settings to avoid common issues.