class in UnityEngine
/
Inherits from:Behaviour
/
Implemented in:UnityEngine.Physics2DModule
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
CloseFor some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
CloseThe parent class for collider types used with 2D gameplay. Provides methods to defines the shape and physical behavior for 2D object interactions, used to detect collisions, and trigger events in 2D game environments.
The Collider2D class serves as a parent class for various two-dimensional collider components that define the physical boundaries of objects. These colliders enable interaction with other objects in a 2D physics simulation. They play a key role in detecting collisions and managing interactions, and setting up triggers for events when objects overlap or make contact with each other.
Collision detection is crucial for creating realistic and interactive game environments. The use of Collider2D-based components addresses the challenge of determining interactions, collisions, and specific behaviors, supporting the implementation of game mechanics like movement and collision responses.
In a typical game development workflow, these components are necessary for objects such as characters, obstacles, and collectibles that require physical interaction or collision detection. Developers add specific Collider2D-derived components to GameObjects to establish interaction boundaries and configure their properties to align with desired dynamics. Scripts can then handle collision events and responses, then integrate seamlessly into the gameplay and physics system.
To use these collider components, add them to GameObjects and configure them to match physical boundaries. While they are not necessary for static or trigger objects, you can add a Rigidbody2D component to enable dynamic interactions and movement. The recommended best practice is to properly configure size, position, and type because it is crucial to avoid inaccurate collision detection or unintended behavior. Be careful to avoid issues like incorrect layering or improperly set triggers that can lead to detection failures.
These collider components work with Unity's Physics2D system. They can be used with layers to optimize collision management and interactions. They also facilitate efficient overlap and raycast operations, such as Physics2D.OverlapCircle and Physics2D.Raycast, for precise object detection. Unity debugging tools can be used to help visualize and refine colliders behaviors.
This example iterates through GameObjects in a scene, logging Collider2D component information such as size and trigger status:
using UnityEngine; public class LogCollider2D : MonoBehaviour { void Start() { // Iterate over all GameObjects in the scene. foreach (var gameObject in FindObjectsByType<GameObject>(FindObjectsSortMode.None)) { // Iterate over all Collider2D components on the GameObject. foreach (var collider in gameObject.GetComponents<Collider2D>()) { // Log various properties. var message = $"GameObject: {gameObject.name}, Collider Type: {collider.GetType().Name}, Is Trigger: {collider.isTrigger}"; if (collider is BoxCollider2D boxCollider) { message += $", Size: {boxCollider.size}"; } else if (collider is CircleCollider2D circleCollider) { message += $", Radius: {circleCollider.radius}"; } else if (collider is PolygonCollider2D polygonCollider) { message += $", Point Count: {polygonCollider.GetTotalPointCount()}"; } Debug.Log(message); } } } }
Additional resources: BoxCollider2D, CapsuleCollider2D, CircleCollider2D, CompositeCollider2D, CustomCollider2D, EdgeCollider2D, PolygonCollider2D, TilemapCollider2D & Rigidbody2D.
attachedRigidbody | The Rigidbody2D attached to the Collider2D. |
bounceCombine | The bounciness combine mode used by the Collider2D. |
bounciness | The bounciness used by the Collider2D. |
bounds | The world space bounding area of the collider. |
callbackLayers | The Layers that this Collider2D will report collision or trigger callbacks for during a contact with another Collider2D. |
composite | Get the CompositeCollider2D that is available to be attached to the collider. |
compositeCapable | Indicates if this Collider2D is capable of being composited by the CompositeCollider2D. |
compositeOperation | The composite operation to be used by a CompositeCollider2D. |
compositeOrder | The composite operation order to be used when a CompositeCollider2D is used. |
contactCaptureLayers | The layers of other Collider2D involved in contacts with this Collider2D that will be captured. |
density | The density of the collider used to calculate its mass (when auto mass is enabled). |
errorState | The error state that indicates the state of the physics shapes the 2D Collider tried to create. (Read Only) |
excludeLayers | The additional Layers that this Collider2D should exclude when deciding if a contact with another Collider2D should happen or not. |
forceReceiveLayers | The Layers that this Collider2D can receive forces from during a Collision contact with another Collider2D. |
forceSendLayers | The Layers that this Collider2D is allowed to send forces to during a Collision contact with another Collider2D. |
friction | The friction used by the Collider2D. |
frictionCombine | The friction combine mode used by the Collider2D. |
includeLayers | The additional Layers that this Collider2D should include when deciding if a contact with another Collider2D should happen or not. |
isTrigger | Is this collider configured as a trigger? |
layerOverridePriority | A decision priority assigned to this Collider2D used when there is a conflicting decision on whether a contact between itself and another Collision2D should happen or not. |
localToWorldMatrix | The transformation matrix used to transform the Collider physics shapes to world space. |
offset | The local offset of the collider geometry. |
shapeCount | The number of active PhysicsShape2D the Collider2D is currently using. |
sharedMaterial | The PhysicsMaterial2D that is applied to this collider. |
usedByEffector | Whether the collider is used by an attached effector or not. |
Cast | Casts the Collider shape into the Scene starting at the Collider position ignoring the Collider itself. |
ClosestPoint | Returns a point on the perimeter of this Collider that is closest to the specified position. |
CreateMesh | Creates a planar Mesh that is identical to the area defined by the Collider2D geometry. |
Distance | Calculates the minimum separation of this collider against another collider. |
GetContacts | Retrieves all contact points for this Collider. |
GetShapeBounds | Retrieves a list of Bounds for all PhysicsShape2D created by this Collider2D, and returns the combined Bounds of the retrieved list. |
GetShapeHash | Generates a simple hash value based upon the geometry of the Collider2D. |
GetShapes | Gets all the PhysicsShape2D used by the Collider2D. |
IsTouching | Check whether this collider is touching the collider or not. |
IsTouchingLayers | Checks whether this collider is touching any colliders on the specified layerMask or not. |
Overlap | Get a list of all Colliders that overlap this Collider. |
OverlapPoint | Check if a collider overlaps a point in space. |
Raycast | Casts a ray into the Scene that starts at the Collider position and ignores the Collider itself. |
OnCollisionEnter2D | Sent when an incoming collider makes contact with this object's collider (2D physics only). |
OnCollisionExit2D | Sent when a collider on another object stops touching this object's collider (2D physics only). |
OnCollisionStay2D | Sent each frame where a collider on another object is touching this object's collider (2D physics only). |
OnTriggerEnter2D | Sent when another object enters a trigger collider attached to this object (2D physics only). |
OnTriggerExit2D | Sent when another object leaves a trigger collider attached to this object (2D physics only). |
OnTriggerStay2D | Sent each frame where another object is within a trigger collider attached to this object (2D physics only). |
enabled | Enabled Behaviours are Updated, disabled Behaviours are not. |
isActiveAndEnabled | Reports whether a GameObject and its associated Behaviour is active and enabled. |
gameObject | The game object this component is attached to. A component is always attached to a game object. |
tag | The tag of this game object. |
transform | The Transform attached to this GameObject. |
hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? |
name | The name of the object. |
BroadcastMessage | Calls the method named methodName on every MonoBehaviour in this game object or any of its children. |
CompareTag | Checks the GameObject's tag against the defined tag. |
GetComponent | Gets a reference to a component of type T on the same GameObject as the component specified. |
GetComponentInChildren | Gets a reference to a component of type T on the same GameObject as the component specified, or any child of the GameObject. |
GetComponentIndex | Gets the index of the component on its parent GameObject. |
GetComponentInParent | Gets a reference to a component of type T on the same GameObject as the component specified, or any parent of the GameObject. |
GetComponents | Gets references to all components of type T on the same GameObject as the component specified. |
GetComponentsInChildren | Gets references to all components of type T on the same GameObject as the component specified, and any child of the GameObject. |
GetComponentsInParent | Gets references to all components of type T on the same GameObject as the component specified, and any parent of the GameObject. |
SendMessage | Calls the method named methodName on every MonoBehaviour in this game object. |
SendMessageUpwards | Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. |
TryGetComponent | Gets the component of the specified type, if it exists. |
GetInstanceID | Gets the instance ID of the object. |
ToString | Returns the name of the object. |
Destroy | Removes a GameObject, component or asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Do not destroy the target Object when loading a new Scene. |
FindAnyObjectByType | Retrieves any active loaded object of Type type. |
FindFirstObjectByType | Retrieves the first active loaded object of Type type. |
FindObjectsByType | Retrieves a list of all loaded objects of Type type. |
Instantiate | Clones the object original and returns the clone. |
InstantiateAsync | Captures a snapshot of the original object (that must be related to some GameObject) and returns the AsyncInstantiateOperation. |
bool | Does the object exist? |
operator != | Compares if two objects refer to a different object. |
operator == | Compares two object references to see if they refer to the same object. |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.